我发现很难用语言表达我想要的东西,所以我将尝试通过一个例子来解释它。假设我重复了两次实验并有两个表:
[df1] [df2]
X Y X Y
2 3 4 1
5 2 2 4
这些表格存储在一个列表中(如果需要,列表可以包含两个以上的元素),我想要做的是创建列表中表格中每个单元格的平均值(或者对于通用版本,应用任何函数我选择单元格,即 mad、sd 等)
[df1] [df2] [dfMeans]
X Y X Y X Y
2 3 4 1 mean(2,4) mean(3,1)
5 2 2 4 mean(5,2) mean(2,4)
我有一个代码解决方案来解决我的问题,但由于这是在 R 中,因此很可能有一种更简洁的做事方式:
df1 <- data.frame(X=c(2,3,4),Y=c(3,2,1))
df2 <- data.frame(X=c(5,1,3),Y=c(4,1,4))
df3 <- data.frame(X=c(2,7,4),Y=c(1,7,6))
dfList <- list(df1,df2,df3)
dfMeans <- data.frame(MeanX=c(NA,NA,NA),MeanY=c(NA,NA,NA))
for (rowIndex in 1:nrow(df1)) {
for (colIndex in 1:ncol(df1)) {
valuesAtCell <- c()
for (tableIndex in 1:length(dfList)) {
valuesAtCell <- c(valuesAtCell, dfList[[tableIndex]][rowIndex,colIndex])
}
dfMeans[rowIndex, colIndex] <- mean(valuesAtCell)
}
}
print(dfMeans)
最佳答案
你可以简单地总结所有 data.frame
在您的 list
使用 Reduce()
,并除以 dfList
的长度, 等于 df
的数量它包含。
Reduce(`+`, dfList) / length(dfList)
# X Y
#1 3.000000 2.666667
#2 3.666667 3.333333
#3 3.666667 3.666667
关于R 给定相同维度数据表的列表,生成每个单元格均值的汇总,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38475103/