带有引用变量的Eval表达式

时间:2018-03-20 10:53:27

标签: r list eval

我有多个表达式(func1,func2 ..)来评估每个表达式的参数:

eval(parse(text=func1), list(param1=exp1, param2=exp2, t =trunc),enclos=.GlobalEnv)

with:

func1 = "rho+lambda"; param1 = "rho"; param2 = "lambda"; exp1 = 0.1; exp2= 0.2 
确实,它起作用了,但是当调用包含这个eval的函数时,就出错了 变量" lambda"未找到。 当它列出时,它是一个环境问题。我将Enclos表单parent.frame()更改为.GlobalEnv。

还有其他解决方案吗?!

1 个答案:

答案 0 :(得分:1)

通常答案是“不要使用eval(parse())”。几乎总有一个更好的选择。

无论如何,你应该检查你传递给它的清单:

func1 = "rho+lambda"; param1 = "rho"; param2 = "lambda"; exp1 = 0.1; exp2= 0.2 
eval(parse(text=func1), setNames(list(exp1, exp2), c(param1, param2)))
#[1] 0.3