Comment obtenir le nom de la variable dans NSE avec dplyr

Jan 22 2021

J'ai donc trouvé plusieurs fois différentes façons d'y parvenir, mais depuis un an environ, il y a eu des changements dans la façon dont dplyr gère les évaluations non standard. Une manière d’y parvenir est essentiellement la suivante:

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

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

Existe-t-il un moyen plus direct d'y parvenir à partir de 2021? J'aurais juré qu'il y avait quelque chose de beaucoup plus simple.

Réponses

2 MatthewSkiffington Jan 22 2021 at 03:42

Utiliser à ensym()partir de 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

Nous pouvons utiliser deparse/substitutedansbase R

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

test(wt)
#[1] "wt"