2016-10-28 4 views
0

この質問には簡単で素敵な答えがありますか?行列の行列のリストがありません

私は与えられたリスト "l"の行列を持っています(同じncol & nrowで)。

l<-lapply(1:10,function(x){ 
    matrix(runif(100),ncol=10) 
}) 

すべてのセルの平均が必要です。 私はforループでそれを行うことができますが、より良い解決策が必要です!

2つの行列を使って、私は(m1 + m2)/ 2でそれを行うことができました。 しかし+ 2つのパラメータのみを受け入れますので、私はそのようにそれを行うカント:

do.call(.Primitive("+"),l)/length(l) 

私はいくつかの素晴らしい答えを楽しみにしています:)ここでは、事前

答えて

5

おかげで、いくつかの選択肢です。

1)削減

Reduce("+", l)/length(l) 

2)simlify2array/apply(1)よりも少し長い。

apply(simplify2array(l), 1:2, mean) 

3)(1)が、等(2)それがmean以外の機能にまで及ぶようtapplyとして単純ではない:

しかし、それは容易 mean以外の機能を拡張するadvadntageを持っています
array(tapply(unlist(l), sequence(lengths(l)), mean), dim(l[[1]])) 

4)rowMeans

array(rowMeans(matrix(unlist(l),, length(l))), dim(l[[1]])) 
関連する問題