在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