gpt4 book ai didi

r - R 中带有运算符的用户指定函数

转载 作者:行者123 更新时间:2023-12-01 12:35:37 25 4
gpt4 key购买 nike

我想使用用户指定的函数并将该函数应用于值列表。我设想用户将给出一个“公式”作为包含变量和运算符名称的字符串,例如“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)

当我想在一个函数中使用这种方法时,问题就出现了。为此,我必须在函数内获取用户指定的“公式”。字符串似乎是显而易见的路线。问题是如何在函数内部对其进行评估。 do.call() 似乎不适合,因为每个运算符实际上都是一个函数。我希望像

这样简单的东西
my.formula <- "a * b %% c - d / e ^ f + g %/% h"
with(prmlist, eval(my.formula))

可以,但不行。

最佳答案

您可以使用 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

更新:如果命令是字符串,您可以使用parse:

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

关于r - R 中带有运算符的用户指定函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30125008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com