"找不到对象错误"来自函数内的eval

时间:2016-05-12 05:27:22

标签: r eval

我正在使用字符串eval的简写,它在不同的上下文中表现不同。我正在使用的功能是

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

从全局环境运行此函数时,它按预期工作,可以访问环境变量。例如:

a = 3
teval('a')

将始终返回3

另一方面,函数内的

teval具有不同的行为,具体取决于R版本

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

tevalyFun()

会出现Error in eval(expr, envir, enclos) : object 'a' not found错误。或者将返回函数外部定义的a。我要求解释正在发生的事情并解决问题。

1 个答案:

答案 0 :(得分:1)

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

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

tevalyFun()
#[1] 3