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

在R语言中批量重命名以a_b_开头的列名

解决批量重命名以a_b_开头的列名问题

先构造示例数据框方便测试:

library(dplyr)

df <- tibble(
  x_y_z = 1:3,
  a_b_c = 4:6,
  a_b_d = 7:9,
  a_b_e = 10:12,
  a_b_f = 13:15
)

你的原代码有两个关键错误:

  1. substr(df, 5,5)错误传入了整个数据框,rename_with的第二个参数需要接收列名字符串作为输入,要用.x指代当前列名;
  2. starts_with(a_b\_)中的匹配字符串未加引号,R会将其识别为对象而非字符串,需改为starts_with("a_b_")。

正确写法1:用substr截取(适合固定长度前缀)

因为a_b_是4个字符,从第5位开始截取到末尾即可保留最后一个字符:

df_renamed <- df %>%
  rename_with(~substr(.x, 5, nchar(.x)), starts_with("a_b_"))

正确写法2:用正则替换(更通用)

用正则表达式替换掉开头的a_b_,无论后续字符长度都能适用:

df_renamed <- df %>%
  rename_with(~sub("^a_b_", "", .x), starts_with("a_b_"))

运行后列名将变为x_y_z、c、d、e、f,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 01:37:04