假设我有以下df列表(实际上我有很多dfs)。
seq <- c("12345","67890")
li <- list()
for (i in 1:length(seq)){
li[[i]] <- list()
names(li)[i] <- seq[i]
li[[i]] <- data.frame(A = c(1,2,3),
B = c(2,4,6))
}
我想做的是计算列表之间相同单元格位置内的均值,并保持与原始列表相同的行数和列数。我该怎么办?我相信我可以使用apply()函数,但是我不确定如何做到这一点。
预期输出(不足为奇):
A B
1 1 2
2 2 4
3 3 6
实际上,每个列表中的值不一定相同。
答案 0 :(得分:4)
如果没有NA
,那么我们可以Reduce
得出每个元素的观测值总和除以length
的{{1}}
list
如果有Reduce(`+`, li)/length(li)
# A B
#1 1 2
#2 2 4
#3 3 6
个值,则最好使用NA
(具有mean
个参数)。为此,我们可以将其转换为na.rm
,然后使用array
apply
apply(array(unlist(li), dim = c(dim(li[[1]]), length(li))), c(1, 2), mean)
中的等效选项为
tidyverse