如何在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
相关产品推荐
相关产品推荐

