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

如何在R语言中按名称将多个不同列名统一重命名?

R语言批量重命名CSV列名解决方案

基础Base R实现

直接通过正则匹配目标列名变体,批量替换为统一名称:

# 匹配所有需要重命名的列名
target_cols <- grepl("^IN\\sFILE\\*?$|^IN\\.FILE\\.$", colnames(df))
# 将匹配到的列名统一改为"IN.FILE"
colnames(df)[target_cols] <- "IN.FILE"

正则表达式说明:

  • ^IN\\sFILE\\*?$:匹配"IN FILE"和"IN FILE*"(^表示开头,\\s匹配空格,\\*?表示可选的星号,$表示结尾)
  • ^IN\\.FILE\\.$:匹配"IN.FILE."(\\.转义点号,避免匹配任意字符)

tidyverse(dplyr)实现

如果习惯使用tidyverse生态,用rename_with更简洁:

library(dplyr)

df <- df %>%
  rename_with(~ "IN.FILE", matches("^IN\\sFILE\\*?$|^IN\\.FILE\\.$"))

matches()函数会自动识别符合正则的列名,rename_with完成批量替换。

原代码问题说明

你的代码失败原因有两点:

  • 列名判断逻辑错误:colnames(df) == "IN FILE"|"IN.FILE."|"IN FILE*" 不符合R语法,不能直接用|连接多个相等判断,需用%in%或正则匹配
  • 无需提前判断first_line,直接对数据框列名操作更高效可靠

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 10:30:07