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

如何用gsub函数批量交换列名中特定位置的元素?

用gsub批量调整R数据框列名格式

需要将形如measure_subscale_wave的列名,转换为measure_wave_subscale格式——核心是交换第二个下划线后与第三个下划线后的内容。

现有代码框架如下,需补全gsub的pattern参数,同时修正replacement的小问题:

data_test <- data %>% 
  rename_with(
    .fn = ~gsub(
      pattern = 'measure_???_(.*)', # 待补全部分
      replacement = '\\1_\\3_\\2', 
      .x
    ), 
    .cols = matches('^measure')
  )

完整修正后的代码

data_test <- data %>% 
  rename_with(
    .fn = ~gsub(
      pattern = '^(measure_)([^_]+)_([^_]+)$',
      replacement = '\\1\\3_\\2',
      .x
    ),
    .cols = matches('^measure')
  )

代码说明

  • pattern解析:
    • ^(measure_):精准匹配列名开头的measure_,作为第一个捕获组(对应\\1)
    • ([^_]+):匹配measure_之后、第二个下划线之前的所有非下划线字符(即原列名中的subscale部分),作为第二个捕获组(对应\\2)
    • _([^_]+)$:匹配第二个下划线之后的所有非下划线字符(即原列名中的wave部分),作为第三个捕获组(对应\\3)
  • replacement解析:
    用\\1\\3_\\2将捕获组重新拼接,得到measure_ + wave + _ + subscale,正好是目标格式measure_wave_subscale。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:09:16