如何从三个不同的数据框中取出每个单元的平均值?

时间:2015-03-28 10:23:38

标签: r

现在我正在对矩阵进行采样,但应该与数据帧相同 想象我们有三个数据框

Mat1<- matrix(rexp(3, rate=.1), ncol=3, nrow=5)
Mat2<- matrix(rexp(3, rate=.1), ncol=3, nrow=5)
Mat3<- matrix(rexp(3, rate=.1), ncol=3, nrow=5)

我知道如果我想加上每个单元格并从中创建一个数据框, 我可以简单地做

M <- Mat1+Mat2+Mat3

但我想取三个细胞的平均值,而不是每三个细胞的加号,我该怎么做?

2 个答案:

答案 0 :(得分:1)

如果有很多矩阵,您可以在将矩阵放入列表后使用Reduce。获取元素的+并将其除以列表的长度。

lst <- mget(paste0('Mat', 1:3))
Reduce(`+`, lst)/length(lst)

同样,你可以做到

Reduce(`+`, lst)

通常,如果对象名称遵循特定模式,这将非常有用。但是,如果矩阵是`xy13542xy&#39;,&#39; z62&#39;,&#39; Ak912f&#39;等,没有太多模式,那么我们需要手动构建列表

lst <- list(xy13542xy, z62, Ak912f)

假设有一个模式,即s1, m1, d1

lst <- mget(ls(pattern='^[a-z]+\\d+'))

答案 1 :(得分:1)

如果我理解正确,你可以这样做:

(Mat1+Mat2+Mat3)/3