วิธีรับชื่อตัวแปรใน NSE ด้วย dplyr
ดังนั้นฉันจึงพบวิธีต่างๆมากมายในการบรรลุเป้าหมายนี้ แต่ในปีที่ผ่านมามีการเปลี่ยนแปลงวิธีที่ dplyr จัดการกับการประเมินผลที่ไม่ได้มาตรฐาน โดยพื้นฐานแล้ววิธีหนึ่งในการบรรลุเป้าหมายนี้มีดังนี้:
require("dplyr")
test <- function(var){
mtcars %>% select({{var}})
print(quo_name(enquo(var)))
}
test(wt)
#> [1] "wt"
มีวิธีที่ตรงกว่าในการบรรลุเป้าหมายนี้ในปี 2021 หรือไม่? ฉันสาบานได้เลยว่ามีบางอย่างที่ง่ายกว่านี้มาก
คำตอบ
2 MatthewSkiffington
ใช้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
เราสามารถใช้deparse/substitute
ในbase R
test <- function(var) deparse(substitute(var))
test(wt)
#[1] "wt"