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

R语言dplyr如何在mutate的case_when中调用cur_column处理匹配后缀列

R dplyr批量处理配对变量解决方案

问题根因

你之前的写法失效核心是!!属于提前求值的注入操作,代码解析阶段cur_column()还未遍历列,无法拿到当前列名,无法匹配对应的dummy变量。

修正代码

首先修正变量定义的笔误:

# 原写法v()为笔误,改为c(),变量名加引号
vars <- c("var1_scale", "var2_scale")

核心处理代码:

library(dplyr)

dt_processed <- dt %>%
  mutate(across(all_of(vars),
                ~ {
                  # 函数内部动态获取对应dummy列名
                  dummy_col <- gsub("scale", "dummy", cur_column())
                  case_when(
                    .data[[dummy_col]] == 0 ~ 0,
                    .data[[dummy_col]] == 1 ~ .x + 1
                  )
                }))

处理结果

运行后得到的转换后数据如下:

var1_dummy var2_dummy var1_scale var2_scale
1           0          1          0          4
2           1          0          4          0
3           0          0          0          0
4           0          0          0          0
5           0          0          0          0
6           1          1          4          3
7           0          0          0          0
8           0          0          0          0
9           1          1          5          4
10          1          1          5          6

如果需要保留原始scale列不被覆盖,可以在across中添加.names参数指定新列名规则,例如.names = "{col}_adjusted"会生成var1_scale_adjusted这类新列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:57:01