无法基于行名合并两个数据集,请求技术协助
解决数据集合并报错的问题
先点明你踩的两个关键坑:
- 把第一个数据集命名成
list了,这是R的内置关键字/函数名,R会优先把它识别成内置函数,而非你定义的数据集,这是报错的核心原因。 merge的参数写错了,正确的行名匹配参数是by="row.names"(注意中间的点),不是by="rownames"。
给你两种实用的解决方法:
方法一:改名后用merge正确合并
先给第一个数据集改个合法名字(比如df_list),再用正确的参数执行合并:
# 给数据集改名,避开内置关键字 df_list <- list # 按行名合并,all=TRUE确保所有观测都保留 merged_data <- merge(df_list, df, by = "row.names", all = TRUE) # 可选:还原行名并删除自动生成的Row.names列 rownames(merged_data) <- merged_data$Row.names merged_data$Row.names <- NULL
方法二:直接用cbind(更简便)
因为两个数据集行数相同、行名完全一致,直接按列绑定就能完成合并,比merge更省事:
# 先给数据集改名 df_list <- list # 自动按行名对齐并合并列 merged_data <- cbind(df_list, df)
如果用cbind后发现行不对齐,说明两个数据集的行名存在不一致(比如大小写、空格、缺失),可以先检查行名匹配情况:
# 验证行名是否完全一致 all(rownames(df_list) == rownames(df))
若返回FALSE,需要先统一行名格式(比如转小写、去除空格)后再合并。
内容的提问来源于stack exchange,提问作者user19729000
相关产品推荐
相关产品推荐

