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

如何在dplyr中修改单列时不重复列名且不使用across函数?

在dplyr中修改单个列:不重复列名也不用across的方法

当然可以实现,这里提供两种实用的方式:

  • 方法一:利用非标准求值(NSE)指定一次列名
    先定义要修改的列名,再通过符号插值和.data代词完成修改,全程只写一次列名:

    library(dplyr)
    
    # 定义目标列名
    target_col <- "cyl"
    mtcars %>% 
      mutate(!!sym(target_col) := .data[[target_col]] * 2)
    
  • 方法二:通过列位置索引修改(适合已知列位置的场景)
    如果知道目标列在数据框中的位置,可以用cur_data()结合列名索引实现,同样不用重复列名或across:

    mtcars %>% 
      mutate(!!names(.)[2] := cur_data()[[2]] * 2)
    

这两种方法都基于dplyr的非标准求值特性,既避免了重复书写列名,也没有使用across函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 14:30:24