这个问题有一个简单而好的答案吗?
我有一个给定的矩阵列表“l”(具有相同的ncol& nrow)。
l<-lapply(1:10,function(x){
matrix(runif(100),ncol=10)
})
我想要每个细胞的平均值。 我可以用for循环做到这一点,但应该有更好的解决方案!
有两个矩阵,我可以用(m1 + m2)/ 2来做。
但是+
只接受两个参数,所以我不能这样做:
do.call(.Primitive("+"),l) / length(l)
我期待着一些不错的答案:)
提前致谢
答案 0 :(得分:5)
以下是一些替代方案:
1)减少
<connectionStrings>
<add name="DB" connectionString="data source=.\sqlExpress;initial catalog=XXX;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
2)simlify2array / apply 比(1)长一点;但是,它确实具有容易扩展到Reduce("+", l) / length(l)
以外的功能的优点:
mean
3)tapply 不像(1)那么简单,但是(2)它扩展到apply(simplify2array(l), 1:2, mean)
以外的函数:
mean
4)rowMeans
array(tapply(unlist(l), sequence(lengths(l)), mean), dim(l[[1]]))