矩阵列表中的平均矩阵

zug*_*abe 0 r matrix

这个问题有一个简单而好的答案吗?

我有一个给定的矩阵列表"l"(具有相同的ncol&nrow).

l<-lapply(1:10,function(x){
  matrix(runif(100),ncol=10)
})
Run Code Online (Sandbox Code Playgroud)

我想要每个细胞的意思.我可以用for循环来做到这一点,但应该有更好的解决方案!

有了两个矩阵,我可以用(m1 + m2)/ 2来做.但+只接受两个参数,所以我不能这样做:

do.call(.Primitive("+"),l) / length(l)
Run Code Online (Sandbox Code Playgroud)

我期待着一些不错的答案:)

提前致谢

G. *_*eck 5

以下是一些替代方案:

1)减少

Reduce("+", l) / length(l)
Run Code Online (Sandbox Code Playgroud)

2)simlify2array/apply比(1)长一点; 但是,它确实具有易于扩展到以下功能的优点mean:

apply(simplify2array(l), 1:2, mean)
Run Code Online (Sandbox Code Playgroud)

3)tapply 不像(1)那么简单,但是(2)它扩展到除mean以下之外的函数:

array(tapply(unlist(l), sequence(lengths(l)), mean), dim(l[[1]]))
Run Code Online (Sandbox Code Playgroud)

4)rowMeans

array(rowMeans(matrix(unlist(l),, length(l))), dim(l[[1]]))
Run Code Online (Sandbox Code Playgroud)