我正在尝试评估一个公式,例如存储在字符串中的"x+y"
。但是,我需要将x
和y
替换为我的环境中的值(为简单起见,我在此使用范围)。
eval(substitute(x+y,list(x=1:10,y=101:110)))
[1] 102 104 106 108 110 112 114 116 118 120
我假设我可以使用parse从字符串生成公式。
eval(substitute(parse(x+y),list(x=1:10,y=101:110)))
然而,这“显然”只给出了
expression(x+y)
所以我试图用两次使用它来表达替代表达式。但是,这也没有给出预期的结果。有什么建议吗?
>substitute(substitute(expr,list(x=1:10,y=101:110)),list(expr=parse(text="x+y")))
substitute(expression(x + y), list(x = 1:10, y = 101:110))
> eval(substitute(substitute(expr,list(x=1:10,y=101:110)),list(expr=parse(text="x+y"))))
expression(x+y)
> eval(eval(substitute(substitute(expr,list(x=1:10,y=101:110)),list(expr=parse(text="x+y")))))
Error in eval(expr, envir, enclos) : object 'x' not found