假设我有 3 个数据帧,每个数据帧都是 5x5 对象:
set.seed(1)
x <-as.data.frame(matrix(rnorm(10),ncol=5,nrow=5))
colnames(x) <-c("a","b","c","d","e")
y <-as.data.frame(matrix(rnorm(10),ncol=5,nrow=5))
colnames(y) <-c("f","g","h","i","j")
z <-as.data.frame(matrix(rnorm(10),ncol=5,nrow=5))
colnames(z) <-c("k","l","m","n","o")
因此,例如,x 看起来像:
> x
a b c d e
1 -0.6264538 -0.8204684 -0.6264538 -0.8204684 -0.6264538
2 0.1836433 0.4874291 0.1836433 0.4874291 0.1836433
3 -0.8356286 0.7383247 -0.8356286 0.7383247 -0.8356286
4 1.5952808 0.5757814 1.5952808 0.5757814 1.5952808
5 0.3295078 -0.3053884 0.3295078 -0.3053884 0.3295078
如何有效地计算每个数据帧中同一位置的 3 个值的跨行平均值?也就是说,例如,计算数据帧上第 1 行/第 1 列中的 3 个值的平均值。当然,手动操作很容易。例如:
> mean(c(x$a[1],y$f[1],z$k[1]))
[1] 0.6014349
> mean(c(x$b[1],y$g[1],z$l[1]))
[1] -0.3071769
... 等等。但是对于更大的数据帧,我怎样才能在 R 中有效地做到这一点呢?我已经尝试了 mapply() 以及 apply() 和 sweep() 的变体,但没有运气。我知道有一个简单的解决方案,但我有脑锁定。任何帮助将不胜感激!