Come ottenere il nome della variabile in NSE con dplyr

Jan 22 2021

Quindi ho trovato molte volte diversi modi per raggiungere questo obiettivo, ma nell'ultimo anno circa ci sono stati cambiamenti nel modo in cui dplyr gestisce la valutazione non standard. Essenzialmente un modo per ottenere questo risultato è il seguente:

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

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

Esiste un modo più diretto per raggiungere questo obiettivo a partire dal 2021? Avrei giurato che c'era qualcosa di molto più semplice.

Risposte

2 MatthewSkiffington Jan 22 2021 at 03:42

Utilizzare ensym()da 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

Possiamo usare deparse/substituteinbase R

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

test(wt)
#[1] "wt"