R 在多个函数调用中使用替换 foo

R 在多个函数调用中使用替换 foo,r,metaprogramming,non-standard-evaluation,R,Metaprogramming,Non Standard Evaluation,以下是rlang方法: foo <- function(...) { x <- rlang::enexprs(...) x[[1]] } foo(2 + 2) foo1到foo1的输入可以是任何表达式,不限于字符串。它也不应该进行评估。所以输出4是不需要的。你完全没有抓住要点。您的答案根本没有涉及非标准评估。请检查更新的代码。我知道该解决方案。但是,有没有一种方法可以不在foo1中使用substitute?@code\u生活并不容易。我们可以对调用堆栈进行任何假设吗? fo

以下是rlang方法:

foo <- function(...) {
  x <- rlang::enexprs(...)
  x[[1]]
}
foo(2 + 2)

foo1到
foo1
的输入可以是任何表达式,不限于字符串。它也不应该进行评估。所以输出4是不需要的。你完全没有抓住要点。您的答案根本没有涉及非标准评估。请检查更新的代码。我知道该解决方案。但是,有没有一种方法可以不在
foo1
中使用
substitute
?@code\u生活并不容易。我们可以对调用堆栈进行任何假设吗?
foo <- function(...) {
  x <- rlang::enexprs(...)
  x[[1]]
}
foo(2 + 2)
2 + 2
foo1 <- function(parm) {
  p <- substitute(parm)
  do.call(foo, list(p))
}
foo1(2 + 2)
#2 + 2