假设我有一个data.frames列表(行和列相等)
dat1<;-as.data.frame(矩阵(rnorm(25),ncol=5))
dat2<;-as.data.frame(矩阵(rnorm(25),ncol=5))
dat3<;-as.data.frame(矩阵(rnorm(25),ncol=5))
all.dat<;-列表(dat1=dat1,dat2=dat2,dat3=dat3)
如何返回单个data.frame,即列表中每个元素的平均值(或总和等)(例如,列表1、2、3等中第一行和第一列的平均值)?我在plyr中尝试了lappy和ldply,但它们返回列表中每个data.frame的统计信息
编辑:由于某种原因,这被重新标记为家庭作业。这两方面都不重要,但这不是一个家庭作业问题。我只是不知道为什么我不能让它工作。谢谢你的洞察力
编辑2:进一步澄清:
我可以使用循环获得结果,但我希望有一种方法(一种更简单、更快的方法,因为我使用的数据具有12行乘100列的data.frames,并且有1000+个这些数据帧的列表)
z<;-矩阵(0,nrow(所有数据$dat1),ncol(所有数据$dat1))
对于(1:nrow中的l(所有数据$dat1)){
适用于(1分m:ncol(全部dat$dat1)){
z[l,m]<;-平均值(未列出(lappy(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=aApply(laply(all.dat,as.matrix),c(2,3),平均值)