r - data.frames 列表中元素的平均值

标签 r list dataframe plyr

假设我有一个 data.frames 列表(行和列相等)

dat1 <- as.data.frame(matrix(rnorm(25), ncol=5))
dat2 <- as.data.frame(matrix(rnorm(25), ncol=5))
dat3 <- as.data.frame(matrix(rnorm(25), ncol=5))

all.dat <- list(dat1=dat1, dat2=dat2, dat3=dat3)

如何返回单个 data.frame,它是列表中 data.frames 中每个元素的平均值(或总和等)(例如,列表 1、2、3 中第一行和第一列的平均值等在)?我在 lapply 中尝试过 ldplyplyr 但这些返回列表中每个 data.frame 的统计数据。

编辑:出于某种原因,这被重新标记为家庭作业。并不是说这两种方式都很重要,但这不是作业问题。我只是不知道为什么我不能让它工作。感谢您的任何见解!

编辑2:进一步说明:
我可以使用循环获得结果,但我希望有一种方法(一种更简单、更快的方法,因为我使用的数据具有 12 行 x 100 列的 data.frames,并且有 1000 多个这些的列表数据帧)。
z <- matrix(0, nrow(all.dat$dat1), ncol(all.dat$dat1))

for(l in 1:nrow(all.dat$dat1)){
   for(m in 1:ncol(all.dat$dat1)){
      z[l, m] <- mean(unlist(lapply(all.dat, `[`, i =l, j = m)))
   }
}

结果是:
> z
        [,1]        [,2]        [,3]        [,4]       [,5]
[1,] -0.64185488  0.06220447 -0.02153806  0.83567173  0.3978507
[2,] -0.27953054 -0.19567085  0.45718399 -0.02823715  0.4932950
[3,]  0.40506666  0.95157856  1.00017954  0.57434125 -0.5969884
[4,]  0.71972821 -0.29190645  0.16257478 -0.08897047  0.9703909
[5,] -0.05570302  0.62045662  0.93427522 -0.55295824  0.7064439

我想知道是否有一种不那么笨拙和更快的方法来做到这一点。谢谢!

最佳答案

这是一个带有 plyr 的单内衬.您可以更换 mean与您想要的任何其他功能。

ans1 = aaply(laply(all.dat, as.matrix), c(2, 3), mean)

关于r - data.frames 列表中元素的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7651539/

相关文章:

python - 寻找数据框中出现的差异

python - 多个数据帧的每一列的平均值到一个数据帧 - Python pandas

R Shiny 设置复选框控制值到数据框特定列中的值

list - 组合 Scala 列表中的元素

r - 在不规则网格上绘制和着色数据

CSS - 元素符号和列表之间的空间而不填充列表

list - python : Find all pairwise distances between points and return points along with distance

python - 将虚拟列添加到原始数据框

r - 我如何在 R 中沉默 confint

html - 如何将 R 数据框转换为简单、无样式的 html 表格?