【发布时间】:2019-07-26 05:00:09
【问题描述】:
我正在构建一个函数,我希望用户能够为其传递未加引号的变量。稍后在准备输出时,我将需要这些变量的名称作为字符串。
如果每个参数只带有一个变量,这没有问题。我可以使用deparse(substitute(x)) 或rlang::as_name(rlang::enquo(x)) 来获取名称(后者可能是更好的方法)。但是,如果我让他们使用c() 在一个参数中传递多个变量,我该怎么做?
在阅读了一大堆关于 quosures 等的文章后,到目前为止,我想出的唯一方法是 names(dplyr::select(data,{{x}})),但我无法想象这是正确的方法。
nameprinter <- function(x, manynames, onename) {
manynames <- names(dplyr::select(x, {{manynames}}))
onename <- rlang::as_name(rlang::enquo(onename))
c(manynames,onename)
}
df <- data.frame(a=1:10,b=1:10,c=1:10)
nameprinter(df,c(a,b),c)
# [1] "a" "b" "c"
在获取manynames 中传递的变量名称方面,有什么比我这里更好的方法?谢谢。
【问题讨论】: