"object not found error" 来自函数内部的 eval

"object not found error" from eval inside a function

我正在使用 shorthand 进行字符串评估,它在不同的上下文中表现不同。我使用的函数是

teval = function(string,...){
    eval(parse(text = string), ...)
}

当 运行 这个函数来自全局环境时,它按预期工作,可以访问环境变量。例如:

a = 3
teval('a')

永远return 3

teval 另一方面,函数内部根据 R 版本有不同的行为

tevalyFun = function(){
    a=3
    teval('a')
}

tevalyFun()

将给出 Error in eval(expr, envir, enclos) : object 'a' not found 错误。或者将 return 定义在函数外的 a 。我要求解释发生的事情和解决问题的方法。

我们可以将teval中的envir指定为environment(使用R 3.3.0

a <- 231
tevalyFun = function(){
   a=3
  teval('a', envir = environment())
}

tevalyFun()
#[1] 3