Cách lấy tên biến trong NSE với dplyr
Vì vậy, tôi đã nhiều lần tìm ra nhiều cách khác nhau để đạt được điều này, nhưng kể từ năm ngoái, đã có những thay đổi đối với cách dplyr xử lý đánh giá không chuẩn. Về cơ bản, một cách để đạt được điều này là như sau:
require("dplyr")
test <- function(var){
mtcars %>% select({{var}})
print(quo_name(enquo(var)))
}
test(wt)
#> [1] "wt"
Có cách nào trực tiếp hơn để đạt được điều này vào năm 2021 không? Tôi đã có thể thề rằng có một cái gì đó đơn giản hơn nhiều.
Trả lời
2 MatthewSkiffington
Sử dụng ensym()
từ 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
Chúng tôi có thể sử dụng deparse/substitute
trongbase R
test <- function(var) deparse(substitute(var))
test(wt)
#[1] "wt"