我希望獲得4維數組中最大值爲1的行的百分比。我可以使用apply函數爲第四維的各個值獲取該信息,然後使用cbind組合所有輸出。但是,第四維中的值的數量可能會有所不同。有沒有一種有效的方式來獲得所需格式的輸出而不使用cbind?R:組合輸出應用於數組維度的各個值
下面是函數代碼,它將所需信息作爲數組第四維的每個級別的單獨向量返回。
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的等效,而不使用cbind上(結合了應用和colMeans功能也許一襯墊)的輸出Pa和Pb?如果第四維(D)中的值數量發生變化,那麼必須與cbind組合的向量數量會有所不同。
謝謝你的任何建議。
你張貼無需編輯不工作的代碼。 (你設置了一個對象'y',但是然後在'y2'上進行操作。)如果你做了'y2 < - y',那麼結果矩陣就不會如圖所示。 (它反而匹配下面我的答案中的那個)。 – 2012-04-24 23:44:42
是的,我看到並修復了它。對於那個很抱歉。 – 2012-04-24 23:50:12