带引号变量的 Eval 表达式

Eval expression with a quoted variables

我有多个表达式(func1、func2..)要使用每个表达式的参数进行评估:

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

与:

func1 = "rho+lambda"; param1 = "rho"; param2 = "lambda"; exp1 = 0.1; exp2= 0.2 

确实可以,但是当调用包含这个eval的函数时,报错 未找到该变量 "lambda"。 当它是一个列表时,这是一个环境问题。我将 Enclos 形式 parent.frame() 更改为 .GlobalEnv。

还有其他解决方案吗?!

通常答案是"Don't use 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