Jak uzyskać nazwę zmiennej w NSE za pomocą dplyr

Jan 22 2021

Znalazłem więc wiele różnych sposobów, aby to osiągnąć, ale od mniej więcej ostatniego roku nastąpiły zmiany w sposobie, w jaki dplyr obsługuje niestandardową ocenę. Zasadniczo jeden ze sposobów osiągnięcia tego jest następujący:

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

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

Czy istnieje bardziej bezpośredni sposób na osiągnięcie tego od 2021 roku? Mógłbym przysiąc, że było coś znacznie prostszego.

Odpowiedzi

2 MatthewSkiffington Jan 22 2021 at 03:42

Użyj ensym()od 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

Możemy użyć deparse/substitutewbase R

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

test(wt)
#[1] "wt"