捕获函数中输入值的名称

Capture the name of an input value in a function

我想知道是否有办法在下面的函数中捕获参数 study_id 的输入。

例如,在下面的例子中我想要的输出是:"study"。这可能吗?

library(rlang)

foo <- function(data, study_id){
  
  study_id <- ensym(study_id)
  
# names(data[study_id]) # I tried this without success
}
  
# EXAMPLE OF USE:

dat = data.frame(a=1:3,study=4:6)

foo(dat, study_id = study)

# DESIRED OUTPUT:

> [1] "study"

我们可以使用 as_string

foo <- function(data, study_id){
  
  study_id <- ensym(study_id)
  
  as_string(study_id)
}

-测试

foo(dat, study_id = study)
[1] "study"

base R中,这可以用deparse/substitute

来完成
foo1 <- function(data, study_id) deparse(substitute(study_id))
foo1(dat, study_id = study)
[1] "study"