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

如何高效合并2个以上的数据框列表为单个列表?

合并多个列表为单一列表的高效方法

你可以用以下几种更高效的方式替代多次调用append:

方法1:直接用c()拼接

把所有待合并的列表作为参数传给c()函数,就能一次性完成合并,这是最简洁的方案:

res <- c(ls1, ls2, ls3)

这个方法和append的底层逻辑一致,但无需重复调用,支持任意数量的列表输入。

方法2:借助purrr::flatten()处理嵌套列表

如果你的多个列表都存放在一个父列表中(比如先把所有列表打包成all_lists <- list(ls1, ls2, ls3)),可以用purrr包的flatten()函数直接展开嵌套结构:

library(purrr)
all_lists <- list(ls1, ls2, ls3)
res <- flatten(all_lists)

这种方式适合批量管理列表的场景,尤其当列表数量很多时,先统一收纳再一次性展开更高效。

方法3:用do.call()+mget()处理批量命名列表

如果你的列表是按规律命名的(比如ls1、ls2……ls10),可以用mget()批量获取这些列表,再通过do.call()调用c()完成合并:

# 获取所有以ls开头、后面跟数字的列表
list_objects <- mget(ls(pattern = "^ls\\d+$"))
res <- do.call(c, list_objects)

这个方法无需手动逐个输入列表名称,适合列表数量极多且命名有规律的场景。

为什么mapply不适用?

你之前尝试的mapply(c, ls1, ls2, ls3, SIMPLIFY = F)是按位置配对合并:它会把每个输入列表的第1个元素合并成一个子列表,第2个元素合并成另一个子列表,最终得到长度为2的列表,这和你“把所有列表的元素依次拼接”的需求完全不符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:24:04