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

R语言如何将字符串格式列名传入dplyr的across函数进行处理

解决方案

你遇到的报错本质原因是R会把cols_to_modify列的字符串整体识别为单个列名,而非多个列的组合规则,因此提示找不到名为c(drat, wt)的列。你可以通过解析字符串为R表达式的方式实现需求,代码如下:

library(tidyverse)

# 正确实现代码
mtcars_2 %>% 
  mutate(across(
    .cols = eval(rlang::parse_expr(first(cols_to_modify))),
    .fns = round
  ))

运行后输出结果符合预期:

drat wt  qsec cols_to_modify
Mazda RX4    4  3 16.46    c(drat, wt)

代码逻辑说明

  • first(cols_to_modify):提取cols_to_modify列的首个值,如果你的数据中所有行共用同一组待处理列,该写法通用;如果每行需要处理的列不同,可以搭配rowwise()调整逻辑
  • rlang::parse_expr():将字符串格式的R代码转换为可执行的表达式对象,避免被识别为普通字符串
  • eval():执行解析后的表达式,得到across可以识别的列选择规则

内容的提问来源于stack exchange,提问作者Kene David Nwosu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:39:03