我需要将...
转发给函数参数,将符号提取为代码,并将它们转换为字符,同时保留名称。我通常会使用match.call(expand.dots = FALSE)$...
,但它会破坏!!
运算符。
f <- function(...){
match.call(expand.dots = FALSE)$...
}
f(a = 1234, b = !!my_variable)
## $a
## [1] 1234
##
## $b
## !(!my_variable)
f <- function(...){
# whatever works
}
f(a = 1234, b = !!my_variable)
## $a
## [1] 1234
##
## $b
## !!my_variable
编辑更好:
f <- function(...){
# whatever works
}
my_variable <- "my value"
f(a = 1234, b = !!my_variable)
## $a
## [1] 1234
##
## $b
## [1] "my_value"
答案 0 :(得分:2)
以下代码似乎有效。用例是here。感谢MrFlick让我朝着正确的方向努力。
f <- function(...){
rlang::exprs(...)
}
my_variable <- "my value"
f(a = 1234, b = !!my_variable)
## $a
## [1] 1234
##
## $b
## [1] "my_value"
编辑:顺便说一句,我仍然在寻找一种解析!!
而不进行评估的方法。这将增强与https://github.com/ropensci/drake/issues/200相关的用户端功能。