小编Chr*_*isC的帖子

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

假设我有一个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)
Run Code Online (Sandbox Code Playgroud)

如何返回单个data.frame,它是整个列表中data.frames中每个元素的平均值(或总和等)(例如,列表1,2,3中的第一行和第一列的平均值等等)上)?我曾尝试lapplyldplyplyr,但这些返回统计量列表中的每个data.frame.

编辑:出于某种原因,这被重新作为家庭作业.这不重要,但这不是一个功课问题.我只是不知道为什么我不能让这个工作.感谢您的任何见解!

编辑2:为了进一步说明:我可以使用循环获得结果,但我希望有一种方法(更简单,更快捷的方式,因为我使用的数据具有12行×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)))
   }
}
Run Code Online (Sandbox Code Playgroud)

结果意味着:

> 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 …
Run Code Online (Sandbox Code Playgroud)

r list plyr dataframe

23
推荐指数
4
解决办法
2万
查看次数

标签 统计

dataframe ×1

list ×1

plyr ×1

r ×1