【发布时间】:2016-11-23 07:50:33
【问题描述】:
我发现很难用语言表达我想要的东西,所以我会尝试通过一个例子来解释它。假设我重复了两次实验并有两个表:
[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)
【问题讨论】:
-
数据帧中的行顺序是否重要?
-
我以后可以随时使用它们,所以没有必要
-
我的意思是:平均值是否要按行应用于数据帧?
-
在单元方面,列表中的每个数据框都是重复实验,因此:需要
mean(c(dfList[[1]][1,1], dfList[[2]][1,1])mean(c(dfList[[1]][i,j], dfList[[2]][i,j])
标签: r list dataframe data.table