我有多个表达式(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。
还有其他解决方案吗?!
答案 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