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

如何在R语言中删除数据框列名末尾的括号数字及冗余字符

R语言删除数据框列名后缀括号内容的解决方案

你的原有正则存在两个问题:一是没有匹配括号字符,二是匹配规则会误删列名前缀的大写字母,不符合保留字母前缀的需求。

最优实现代码

直接匹配空格+括号及括号内的所有内容,替换为空即可,不会影响无括号的Subject列:

colnames(data) <- gsub(" \\(.*\\)", "", colnames(data))

正则说明

  • 开头的空格匹配列名中字母和括号之间的空格
  • \\(转义匹配左括号(
  • .*匹配括号内的任意内容
  • \\)转义匹配右括号)

更严谨的版本(仅匹配括号内为纯数字的场景)

如果存在其他带括号的合法列名不想被修改,可以用限制括号内只能是数字的规则:

colnames(data) <- gsub(" \\([0-9]+\\)", "", colnames(data))

测试验证

你可以用以下代码验证效果:

# 构造示例数据
data <- data.frame(
  Subject = 1,
  `ASE (232)` = 1.1,
  `ASD (121)` = 1.2,
  `AFD (313)` = 1.3,
  check.names = FALSE
)
# 修改列名
colnames(data) <- gsub(" \\(.*\\)", "", colnames(data))
# 输出列名验证
print(colnames(data))

运行后输出的列名为:"Subject" "ASE" "ASD" "AFD",完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:24:06