dplyr로 NSE에서 변수 이름을 얻는 방법

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"