我希望获得 4 维数组中最大值为 1 的行的百分比。我可以使用第 4 维的单个值的应用函数来获取该信息,然后使用 cbind 组合所有输出。但是,第 4 维中的值的数量可能会有所不同。有没有一种有效的方法可以在不使用 cbind 的情况下获得所需格式的输出?
下面是功能代码,它将所需信息作为数组第 4 维的每个级别的单独向量返回。
set.seed(9345)
A <- 8
B <- 2
C <- 5
D <- 2 # the value of D might change
y2 <- array(rbinom(A*B*C*D, 1, 0.4), dim = c(A, B, C, D))
pA <- colMeans(apply(y2[,,,1], c(1,3), max))
pB <- colMeans(apply(y2[,,,2], c(1,3), max))
pp <- cbind(pA, pB)
pp
# pA pB
# [1,] 0.750 0.875
# [2,] 0.625 0.250
# [3,] 0.375 1.000
# [4,] 0.375 0.500
# [5,] 0.625 0.750
有没有一种简单的方法来获得 pp 的等价物,而无需在输出 pA 和 pB 上使用 cbind (可能是一个包含 apply 和 colMeans 函数的单线)?如果第 4 维 (D) 中值的数量发生变化,则必须与 cbind 组合的向量数量会有所不同。
感谢您的任何建议。