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

R按row.names合并数据框时为何生成首字母大写的Row.names列

R中merge按行名合并后列名首字母大写的原因

这是R内置merge.data.frame()方法的固定设计,具体逻辑如下:

  • 当你通过by = "id"这类参数指定数据框已有的普通列作为合并键时,merge会直接保留原列名作为合并结果的键名,所以第一个示例的结果里列名还是id。
  • 当你指定by = "row.names"(或者等效的by = 0)按行名合并时,行名本身不属于数据框的常规列,函数为了避免和数据框中可能存在的、名为row.names的普通列重名冲突,会固定将生成的合并键命名为首字母大写的Row.names,专门标识这是从行名转换来的合并列。

如果你需要自定义这个列的名称,可以在合并完成后手动修改列名,示例如下:

# 合并后修改列名
colnames(d3)[1] <- "id"

也可以先把行名转为普通列再合并,直接自定义列名:

library(tibble)
d1 <- rownames_to_column(d1, var = "id")
d2 <- rownames_to_column(d2, var = "id")
d3 <- merge(d1, d2, by = "id")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 14:06:04