data.frames 列表中的元素求和

Sum elements across a list of data.frames

我有一个 12 的列表(总计)data.frames(都是相同的形式),我需要第 2 列列表中每一行的总和。

我正在寻找一种更智能的方法来对列表中的元素求和,如下所示:

Total[[1]][,2] + Total[[2]][,2] + Total[[3]][,2] +..+Total[[12]][,2]

第 2 列的长度为 70,因此结果应该是一个长度为 70 的向量

希望有人知道他是对的 sapplylapplyapply 函数代码

这里有一个选项:

Reduce("+", lapply(Total, "[[", 2))

但是请注意,由于 +

这与潜在的 NA 不兼容

这是一个内置数据的示例:

Reduce("+", lapply(list(iris, iris, iris), "[[", 2))

我们可以在从data.framelist中提取第二列后使用rowSums。如果有任何缺失值,na.rm=TRUE 会处理。

rowSums(sapply(Total, `[[`, 2), na.rm = TRUE)

或者另一种选择是tidyverse

library(tidyverse)
Total %>%
      map(~.[[2]]) %>% 
      #or as suggested in the comments
      #map(2) %>%
      reduce(`+`)