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

如何使用正则表达式批量重命名R语言数据框的多列列名

解决方案

直接通过stringr::str_replace_all()传入多组正则匹配规则,一行代码即可完成全量列名重命名,适配上百列的批量处理场景,不需要逐个编写替换规则:

library(stringr)

# 批量替换列名
colnames(df) <- str_replace_all(
  colnames(df),
  c(
    # 匹配所有括号内为纯数字的内容,整段删除
    "\\(\\d+\\)" = "",
    # 匹配包含字母括号的列名,直接提取括号内的大写字母作为新列名
    ".*\\(([A-Z]+)\\).*" = "\\1"
  )
)

# 清理替换后可能残留的首尾多余空格
colnames(df) <- str_squish(colnames(df))

规则说明

  • \\(\\d+\\) 只会匹配「左括号+任意长度数字+右括号」的组合,删除后不会影响括号内为字母的内容
  • .*\\(([A-Z]+)\\).* 会自动识别所有包含大写字母括号的列名,提取括号内的缩写作为新列名,有多少个类似(AIYN)、(SIYN)的结构都可以自动适配,无需单独写规则
  • 如果你的缩写包含小写字母,把上述正则中的[A-Z]+修改为[A-Za-z]+即可适配

执行上述代码后,你的示例数据框列名会自动调整为c("code", "names", "AIYN", "SIYN"),完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:18:02