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

R语言基于命名向量或映射数据框修改dataframe列名的实现方法

R语言实现DataFrame列名按映射表替换

首先可以先运行以下代码构造示例数据,方便复现测试:

# 构造原始数据框
df <- data.frame(
  a = rep(1,4), b = rep(1,4), c = rep(1,4), d = rep(1,4), e = rep(1,4),
  f = rep(1,4), g = rep(1,4), h = rep(1,4), i = rep(1,4), j = rep(1,4)
)

# 构造映射关系表
map_df <- data.frame(
  sample = c("a","b","c","d","e","f","g","h","i","j"),
  name = 1:10
)

方法1:基础R实现

无需加载第三方包,直接通过match函数按值匹配列名和映射关系即可,不依赖映射表和原始列的排列顺序:

colnames(df) <- map_df$name[match(colnames(df), map_df$sample)]

如果存在原始列名不在映射表中的情况,match会返回NA,你可以提前过滤掉不需要的列,或者为NA位置自定义默认列名。

方法2:tidyverse(dplyr)实现

如果你已经在使用tidyverse技术栈,可以用rename_with函数实现,适配管道流写法:

library(dplyr)

df <- df %>%
  rename_with(~ map_df$name[match(.x, map_df$sample)], everything())

运行完成后可通过以下代码验证结果:

print(colnames(df))
# 预期输出: [1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10"

内容的提问来源于stack exchange,提问作者Gabriel G.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:27:00