You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效计算列表中所有DataFrame指定列的求和向量?

批量计算列表中DataFrame指定列的求和结果

我有一个包含多个DataFrame的列表,示例代码如下:

df1 <- data.frame(c(1:10), c(11:20), c(31:40), c(1,2))
colnames(df1) <-c("a","b","c","d")

df2 <- data.frame(c(2:11), c(12:21), c(31:40), c(1,1))
colnames(df2) <-c("a","b","c","d")

df3 <- data.frame(c(1:12), c(11:22), c(31:42), c(2,2))
colnames(df3) <-c("a","b","c","d")

mylist <- list(df1,df2,df3)
names(mylist) <- c("ID_1", "ID_2", "ID_3")

需求是生成一个向量,包含该列表中所有DataFrame的d列求和结果。当前手动逐个求和的方法可行,但列表中DataFrame数量较多,需要更高效的实现方式。

高效解法

方法1:基础R原生实现(lapply + unlist)

unlist(lapply(mylist, function(x) sum(x$d)))

通过lapply遍历列表内每个DataFrame,对d列求和后,用unlist将结果转换为带原列表名称的数值向量,无需额外安装包。

方法2:tidyverse风格(purrr包的map_dbl)

# 未安装purrr时先执行安装
# install.packages("purrr")
library(purrr)
map_dbl(mylist, ~sum(.x$d))

map_dbl会直接返回数值型向量,代码更简洁直观,适合习惯tidyverse生态的用户。

方法3:基础R简化写法(sapply)

sapply(mylist, function(x) sum(x$d))

sapply是lapply的简化版本,会自动将结果简化为向量,写法更紧凑,同样基于基础R实现。

内容的提问来源于stack exchange,提问作者OK_4711

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 17:36:10