Cara mendapatkan nama variabel di NSE dengan dplyr

Jan 22 2021

Jadi saya telah menemukan berkali-kali berbagai cara berbeda untuk mencapai ini, tetapi selama setahun terakhir ini telah ada perubahan pada cara dplyr menangani evaluasi non standar. Pada dasarnya salah satu cara untuk mencapai ini adalah sebagai berikut:

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

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

Apakah ada cara yang lebih langsung untuk mencapai ini pada tahun 2021? Aku berani bersumpah ada sesuatu yang lebih sederhana.

Jawaban

2 MatthewSkiffington Jan 22 2021 at 03:42

Gunakan ensym()dari 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

Kita bisa gunakan deparse/substitutedalambase R

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

test(wt)
#[1] "wt"