【发布时间】:2014-08-19 07:03:22
【问题描述】:
这是一个将表达式作为参数的简单函数。
f <- function(expr) {
expr <- substitute(expr)
eval(expr)
}
(实际上,我还需要在函数中稍微操作一下表达式,并可能在其他有意义的环境中评估表达式)
当我们调用时它工作正常
f(1+1)
通过直接提供未评估的参数。
但是,我需要 f 也可以像在外部提供明确定义的表达式时一样工作,例如,
q <- quote(1+1)
f(q)
f(expr) 需要避免替换 expr 并返回表达式的值。但是,上面的代码不起作用,因为它会生成表达式本身而不是 2。
所以问题是:如何判断一个参数是否作为表达式给出而不在当前环境中评估它?
【问题讨论】:
标签: r expression eval