Как получить имя переменной в NSE с помощью dplyr

Jan 22 2021

Так что я много раз находил различные способы добиться этого, но примерно за последний год произошли изменения в способе обработки нестандартной оценки в dplyr. По сути, один из способов добиться этого заключается в следующем:

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

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

Есть ли более прямой способ добиться этого к 2021 году? Могу поклясться, что есть что-то гораздо более простое.

Ответы

2 MatthewSkiffington Jan 22 2021 at 03:42

Использовать ensym()от 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

Мы можем использовать deparse/substituteвbase R

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

test(wt)
#[1] "wt"