R中每行的列表计算之间

时间:2018-07-09 16:07:35

标签: r list dataframe

假设我有以下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

实际上,每个列表中的值不一定相同。

1 个答案:

答案 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