2010-07-07 25 views
24

我在想如何在多維數組上使用apply。我有類似以下內容:在R中使用多維數組應用於

A <- array(0, c(2, 2, 5)) 
for(i in 1:5) { 
    A[, , i] <- matrix(rnorm(4), 2, 2) 
} 

我想取這些切片的平均值以獲得單個2乘2矩陣。任何我想出來的方式都非常糟糕。

我希望能夠使用應用,就像我想如果我想要一個矩陣的列的平均說:

B <- matrix(rnorm(10), 5, 2) 
B.mean <- apply(B, 2, mean) 

但是,這似乎並沒有工作,我想它的方式可能與3D陣列:

A.mean <- apply(A, 3, mean) 

我很感謝您的建議。

回答

28
A.mean <- apply(A, c(1,2), mean) 
+0

完美!它就在數組的幫助文件中,但直到你指出它,甚至看過它,我都沒有看到它。謝謝! – TJB 2010-07-07 17:43:09

+8

一般而言,'apply'的'margin'參數應該是您想要保留的維度的向量,而不是摺疊。 – mbq 2010-07-07 18:14:41

+1

那麼:mean.data.frame(A)? – 2010-07-07 18:42:00