0

n data.frameまたはmatrix同じサイズ(r x c のリストが与えられます。すべてのテーブルの各セルに関数を適用し、同じサイズ(r x c)の結果を得る必要data.frameありmatrixます。

For example:
a <- matrix(0:5, 2, 3)
b <- matrix(5:0, 2, 3)
c <- matrix(1, 2, 3)
l <- list(a, b, c)
foo(l, mean) # should retrun
2 2 2 
2 2 2
# For instance the top-left cell of 3 given matrices are 0, 5, and 1, and the mean is 2
# For all other cells, the mean of the values in 3 matrices will be 2

仕事をする方法はたくさんありますが、私は非常に速くて短い解決策を探しています

4

2 に答える 2

2

simplify2arrayこれが関数を使用したRベースのソリューションです

 apply(simplify2array(l),c(1,2),mean)
     [,1] [,2] [,3]
[1,]    2    2    2
[2,]    2    2    2

simplify2array(l)とまったく同じであることに注意してくださいabind(l,along = 3)

于 2013-03-13T15:59:14.703 に答える
1

abindパッケージを使用します。

library(abind)
apply(abind(l,along = 3),c(1,2),mean)

そしてもちろん、より高速なバージョン:

rowMeans(abind(l,along = 3),dims = 2)
于 2013-03-13T15:16:24.317 に答える