R 给定相同维度数据表的列表,生成每个单元格均值的汇总

标签 r list dataframe data.table

我发现很难用语言表达我想要的东西,所以我将尝试通过一个例子来解释它。假设我重复了两次实验并有两个表:

[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/

相关文章:

python - 使用 Python 和 Rpy2 进行统计测试(Kolmogorov 和 T 测试)

python - "Running"加权平均

python - 如何拆分 Pandas 中的几列数据?

python - 如何将 pandas DataFrame 转换为字节,反之亦然?

R CMD 检查 "more rigorous testing"的选项 - 2.15.0

替换类 'expression' 的 R 对象中的字符

c - 我如何确定我已经释放了所有在 C 中分配的内存?

python - 如何检查单元格中的值是否在范围内。基于此将不同的 'scores' 分配给新列

回收旧的 R 包

javascript - 如何循环访问以下 json 列表?