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

R语言如何一次性批量转换多个相同前缀的变量并生成新变量

最优简洁实现方案(基于dplyr的across函数)

你可以用dplyr内置的批量列处理函数across()实现需求,不需要手动逐个罗列变量,代码如下:

library(dplyr)

# 自定义函数保持不变
fctdmat01 <- function(x) {factor(cut(x, breaks = c(-Inf, 2.65, +Inf), labels = c("no", "yes")))} 

deppar <- deppar %>%
  mutate(
    # 匹配所有dmat.开头的列,应用fctdmat01函数
    across(starts_with("dmat."), 
           .fns = fctdmat01,
           # 定义新列命名规则:替换原列名前缀即可,和你手写的输出列名完全一致
           .names = "{gsub('dmat', 'dmat01', col)}")
  )

代码说明

  • starts_with("dmat.")会自动选中所有以dmat.为前缀的列,后续新增同前缀变量也会自动纳入处理,不用修改代码
  • .names参数里的{col}会自动替换为匹配到的原列名,通过简单的字符串替换就能生成符合要求的新列名
旧版dplyr兼容方案

如果你使用的是1.0版本以下的dplyr,可以用已废弃但仍兼容的mutate_at实现:

deppar <- deppar %>%
  mutate_at(vars(starts_with("dmat.")),
            .funs = fctdmat01,
            .name = "dmat01.{sub('dmat.', '', col)}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:48:01