如何使用 dplyr 获取 NSE 中的变量名称
How to get the name of variable in NSE with dplyr
所以我已经多次找到各种不同的方法来实现这一点,但在过去一年左右的时间里,dplyr 处理非标准评估的方式发生了变化。基本上实现这一目标的一种方法如下:
require("dplyr")
test <- function(var){
mtcars %>% select({{var}})
print(quo_name(enquo(var)))
}
test(wt)
#> [1] "wt"
到 2021 年,是否有更直接的方法来实现这一目标?我可以发誓有更简单的东西。
使用 ensym()
来自 rlang
:
require("dplyr")
require("rlang")
test <- function(var){
mtcars %>% select({{var}})
print(ensym(var))
}
test(wt)
#>wt
as.character(test(wt))
#>wt
#>[1] "wt"
我们可以在base R
中使用deparse/substitute
test <- function(var) deparse(substitute(var))
test(wt)
#[1] "wt"
所以我已经多次找到各种不同的方法来实现这一点,但在过去一年左右的时间里,dplyr 处理非标准评估的方式发生了变化。基本上实现这一目标的一种方法如下:
require("dplyr")
test <- function(var){
mtcars %>% select({{var}})
print(quo_name(enquo(var)))
}
test(wt)
#> [1] "wt"
到 2021 年,是否有更直接的方法来实现这一目标?我可以发誓有更简单的东西。
使用 ensym()
来自 rlang
:
require("dplyr")
require("rlang")
test <- function(var){
mtcars %>% select({{var}})
print(ensym(var))
}
test(wt)
#>wt
as.character(test(wt))
#>wt
#>[1] "wt"
我们可以在base R
deparse/substitute
test <- function(var) deparse(substitute(var))
test(wt)
#[1] "wt"