【问题标题】:Eval expression with a quoted variables带引号变量的 eval 表达式
【发布时间】:2018-03-20 10:53:26
【问题描述】:

我有多个表达式(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。

还有其他解决方案吗?!

【问题讨论】:

    标签: r list eval


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-24
      相关资源
      最近更新 更多