So erhalten Sie den Namen der Variablen in NSE mit dplyr

Jan 22 2021

Ich habe viele Male verschiedene Wege gefunden, um dies zu erreichen, aber seit etwa einem Jahr gibt es Änderungen an der Art und Weise, wie dplyr mit nicht standardmäßigen Bewertungen umgeht. Im Wesentlichen ist ein Weg, dies zu erreichen, wie folgt:

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

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

Gibt es einen direkteren Weg, um dies ab 2021 zu erreichen? Ich hätte schwören können, dass es etwas viel Einfacheres gibt.

Antworten

2 MatthewSkiffington Jan 22 2021 at 03:42

Verwendung ensym()von 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

Wir können deparse/substitutein verwendenbase R

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

test(wt)
#[1] "wt"