Cómo obtener el nombre de la variable en NSE con dplyr

Jan 22 2021

Así que he encontrado muchas veces varias formas diferentes de lograr esto, pero a partir del año pasado ha habido cambios en la forma en que dplyr maneja la evaluación no estándar. Básicamente, una forma de lograrlo es la siguiente:

require("dplyr")
test <- function(var){
  mtcars %>% select({{var}})
  print(quo_name(enquo(var)))
}

test(wt)
#> [1] "wt"

¿Existe una forma más directa de lograr esto a partir de 2021? Podría haber jurado que había algo mucho más simple.

Respuestas

2 MatthewSkiffington Jan 22 2021 at 03:42

Utilizar ensym()desde rlang:

require("dplyr")
require("rlang")
test <- function(var){
    mtcars %>% select({{var}})
    print(ensym(var))
}

test(wt)
#>wt

as.character(test(wt))
#>wt
#>[1] "wt"
akrun Jan 22 2021 at 04:17

Podemos usar deparse/substituteenbase R

test <- function(var) deparse(substitute(var))

test(wt)
#[1] "wt"