首页 文章

R:组合输出来应用数组维度的每个值

提问于
浏览
1

我希望在一个4维数组中获得最大值为1的行的百分比 . 我可以使用针对第4维的单个值的应用函数来获取该信息,然后使用cbind来组合所有输出 . 但是,第四维中的值的数量可以变化 . 有没有一种有效的方法来获得所需格式的输出而不使用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

是否有一种简单的方法可以在输出pA和pB上使用cbind获得相当于pp的值(也许是包含apply和colMeans函数的单行程)?如果第四维(D)中的值的数量改变,那么必须与cbind组合的向量的数量将变化 .

谢谢你的任何建议 .

1 回答

  • 4

    这应该是等效的,并且更容易启动:

    colMeans(apply(y2[,,,], c(1,3,4), max))
    #       [,1]  [,2]
    # [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
    

相关问题