R语言如何正确绑定多个已导入的独立数据框?
报错的核心原因
bind_rows无法识别纯字符串形式的对象名称,它的第一参数要求传入由实际数据框组成、每个元素自带名称的列表。你当前传入的names只是存储了数据框名称的字符向量,函数没法通过字符串定位到环境里对应的真实数据框,因此触发「Argument 1 must have names」的报错。
正确操作步骤
- 用
mget()函数做一层转换:传入存了数据框名的字符向量,函数会自动在当前R环境里匹配每个名称,把对应的数据框实体提取出来,组装成自带元素名称的列表——这才是bind_rows能识别的输入格式 - 把转换好的列表作为第一参数传入
bind_rows,搭配.id = "id"参数就能自动生成一列来源标识,追踪每一行数据来自哪个原始CSV对应的独立数据框
修正后的可运行代码
# 字符向量转成实际数据框组成的带名列表 df_collection <- mget(names) # 执行行合并 all_merged <- bind_rows(df_collection, .id = "id")
前置校验小提示
- 运行
mget前可以先跑all(names %in% ls()),确认所有待绑定的数据框都已经正确加载到当前环境,避免因为名称拼写错、文件没读入导致的取对象失败 - 合并后生成的
id列内容就是原始每个数据框的名称,方便后续排查数据来源
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

