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 的向量
希望有人知道他是对的 sapply
、lapply
或 apply
函数代码
这里有一个选项:
Reduce("+", lapply(Total, "[[", 2))
但是请注意,由于 +
。
这与潜在的 NA 不兼容
这是一个内置数据的示例:
Reduce("+", lapply(list(iris, iris, iris), "[[", 2))
我们可以在从data.frame
的list
中提取第二列后使用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(`+`)
我有一个 12 的列表(总计)data.frames(都是相同的形式),我需要第 2 列列表中每一行的总和。
我正在寻找一种更智能的方法来对列表中的元素求和,如下所示:
Total[[1]][,2] + Total[[2]][,2] + Total[[3]][,2] +..+Total[[12]][,2]
第 2 列的长度为 70,因此结果应该是一个长度为 70 的向量
希望有人知道他是对的 sapply
、lapply
或 apply
函数代码
这里有一个选项:
Reduce("+", lapply(Total, "[[", 2))
但是请注意,由于 +
。
这是一个内置数据的示例:
Reduce("+", lapply(list(iris, iris, iris), "[[", 2))
我们可以在从data.frame
的list
中提取第二列后使用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(`+`)