Como obter o nome da variável em NSE com dplyr

Jan 22 2021

Então, eu descobri muitas vezes várias maneiras diferentes de fazer isso, mas desde o ano passado, houve mudanças na maneira como o dplyr lida com a avaliação não padrão. Essencialmente, uma maneira de conseguir isso é a seguinte:

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

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

Existe uma maneira mais direta de conseguir isso a partir de 2021? Eu poderia jurar que havia algo muito mais simples.

Respostas

2 MatthewSkiffington Jan 22 2021 at 03:42

Use ensym()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

Podemos usar deparse/substituteembase R

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

test(wt)
#[1] "wt"