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

如何通过匹配模式将多个R语言列表合并为一个?

按模式合并R语言全局环境中列表的解决方案

修正获取列表名称的错误

你当前使用list.files(pattern = "*_bigmarkets")是错误的——这个函数用于读取系统目录中的文件,而非R全局环境里的对象。要获取全局环境中名称符合*_bigmarkets模式的对象,需用ls()配合正则匹配:

# 匹配全局环境中名称以_bigmarkets结尾的对象
names_of_lists <- ls(pattern = "_bigmarkets$")

合并列表的实用方法

方法1:数据框列表合并(推荐用dplyr)

如果待合并的列表元素都是数据框,用mget()取出对象后,结合dplyr::bind_rows()合并:

library(dplyr)
# 按名称取出所有列表,再按行合并为单个数据框
merged_df <- mget(names_of_lists) %>% bind_rows()

方法2:基础R实现数据框合并

不想加载第三方包的话,用基础R的do.call():

# 取出所有列表后按行合并
merged_df <- do.call(rbind, mget(names_of_lists))

方法3:普通列表合并为大列表

如果待合并对象是普通列表(非数据框),要合并成一个大列表:

# 合并为不递归的大列表
merged_list <- unlist(mget(names_of_lists), recursive = FALSE)

优化文件导入步骤(可选)

你之前用循环load()导入文件容易导致全局环境混乱,建议直接将文件内容加载到列表中,省去后续找对象的步骤:

files <- list.files(pattern = "summary_.*RData")
# 一次性加载所有文件,提取其中符合模式的对象到列表
loaded_data <- lapply(files, function(file_path) {
  load(file_path)
  get(ls(pattern = "_bigmarkets$"))
})
# 直接合并这个列表
merged_result <- do.call(rbind, loaded_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:55:07