【发布时间】:2021-04-16 03:21:41
【问题描述】:
foo <- function(arg) {
substitute(arg)
}
foo1 <- function(parm) {
foo(param)
}
foo1(2 + 2)
输出是:
param
如何在foo 中使用替换,这样输出将是表达式2 + 2?
【问题讨论】:
标签: r metaprogramming non-standard-evaluation
foo <- function(arg) {
substitute(arg)
}
foo1 <- function(parm) {
foo(param)
}
foo1(2 + 2)
输出是:
param
如何在foo 中使用替换,这样输出将是表达式2 + 2?
【问题讨论】:
标签: r metaprogramming non-standard-evaluation
这是 rlang 方法:
foo <- function(...) {
x <- rlang::enexprs(...)
x[[1]]
}
foo(2 + 2)
结果是:
2 + 2
【讨论】:
foo1 的输入可以是任何表达式,不限于字符串。它也不应该评估。所以不希望输出 4。
foo1 <- function(parm) {
p <- substitute(parm)
do.call(foo, list(p))
}
foo1(2 + 2)
#2 + 2
【讨论】:
foo1 中不使用substitute?