我正在使用字符串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
。我要求解释正在发生的事情并解决问题。
答案 0 :(得分:1)
我们可以将envir
中的teval
指定为environment
(使用R 3.3.0
)
a <- 231
tevalyFun = function(){
a=3
teval('a', envir = environment())
}
tevalyFun()
#[1] 3