如何自动为批量合并的R数据框添加来源标识列?
解决R中批量合并数据框并自动添加来源标注的问题
方法1:利用dplyr::bind_rows的.id参数(推荐)
bind_rows本身提供了.id参数,专门用来标记每行数据所属的原始数据框名称,结合批量收集数据框的操作,就能轻松实现自动化处理:
批量收集所有目标数据框到列表
用ls(pattern)匹配所有以Plot_开头的数据框,再用mget转为列表:# 收集全局环境中所有名称以Plot_开头的数据框 plot_list <- mget(ls(pattern = "^Plot_"))如果担心环境中有非数据框的同名对象,可以先过滤:
plot_list <- Filter(is.data.frame, mget(ls(pattern = "^Plot_")))合并并添加来源列
调用bind_rows时指定.id参数为你需要的列名(比如Plot_reference):library(dplyr) All_plots <- bind_rows(plot_list, .id = "Plot_reference")
方法2:用purrr::map_df实现
如果你习惯使用tidyverse的purrr工具,map_df同样可以完成这个任务,它会自动将列表元素的名称作为来源列:
library(purrr) library(dplyr) plot_list <- mget(ls(pattern = "^Plot_")) All_plots <- map_df(plot_list, ~., .id = "Plot_reference")
灵活调整匹配规则
如果你的数据框命名不是严格的Plot_开头,可修改ls的pattern参数适配实际规则:
- 比如数据框名为
Plot1、Plot2这类,用pattern = "^Plot\\d+" - 数据框包含
Plot关键词即可,用pattern = "Plot"
内容的提问来源于stack exchange,提问作者JJ Buckle
相关产品推荐
相关产品推荐

