在R中使用运算符的用户指定函数

在R中使用运算符的用户指定函数,r,function,functional-programming,operators,eval,R,Function,Functional Programming,Operators,Eval,我想使用用户指定的函数,并将该函数应用于值列表。我设想用户将给出一个“公式”,作为包含变量和运算符名称的字符串,例如“a*b%%c-d/e^f+g%/%h” 下面的玩具示例有效 prmlist <- list(a=1:10, b=21:30, c=31:40, d=4, e=5, f=6, g=7, h=8) with(prmlist, a * b %% c - d / e ^ f + g %/% h) prmlist您可以改用substitute()调用运算符: my.formula

我想使用用户指定的函数,并将该函数应用于值列表。我设想用户将给出一个“公式”,作为包含变量和运算符名称的字符串,例如
“a*b%%c-d/e^f+g%/%h”

下面的玩具示例有效

prmlist <- list(a=1:10, b=21:30, c=31:40, d=4, e=5, f=6, g=7, h=8) 
with(prmlist, a * b %% c - d / e ^ f + g %/% h)

prmlist您可以改用
substitute()
调用运算符:

my.formula <- substitute(a * b %% c - d / e ^ f + g %/% h)
with(prmlist, eval(my.formula)) 
 [1]  20.99974  43.99974  68.99974  95.99974 124.99974 155.99974 188.99974
 [8] 223.99974 260.99974 299.99974

但是用户将以字符串形式给出my.formula。这就是我想解决的问题,谢谢。这正是我所需要的
(prmlist,eval(parse(text=my.formula))
,但请记住有关安全性的常见警告。如果没有更好的方法,我会仔细考虑的。
my.formula <- substitute(a * b %% c - d / e ^ f + g %/% h)
with(prmlist, eval(my.formula)) 
 [1]  20.99974  43.99974  68.99974  95.99974 124.99974 155.99974 188.99974
 [8] 223.99974 260.99974 299.99974
myCmd <- "a * b %% c - d / e ^ f + g %/% h"
with(prmlist, eval( parse(text=myCmd) ))
 [1]  20.99974  43.99974  68.99974  95.99974 124.99974 155.99974 188.99974
 [8] 223.99974 260.99974 299.99974