如何在R中转换函数中的用户输入?



我正在尝试在R中开发一个UDF函数,它应该这样工作:

  • 用户写一个数学方程(例如2*x + 4))
  • 我的函数应该将输入转换为r函数,并将其与下限/上限(0和1)积分。)

因此,myfunction(2*x+4)必须解决这个问题并显示5作为输出。

我试过了:

myfunction <- function(x, low, up) {
user_input <- function(x){}
res <- integrate(user_input, lower = low, upper = up)

return(res)
}
myfunction(2*x+4, low = 0, up = 1)

错误:

Error in integrate(user_input, lower = low, upper = up):函数的求值结果长度错误


当然,我可以这样做:

integrand <- function(x){2*x+4}
integrate(integrand, lower = 0, upper = 1)

但这不是我想要的。

我很乐意得到一些提示。

我们可以做

myfunction <- function(y, low, up) {
user_input <- as.function(c(alist(x = ), list(substitute(y))))
res <- integrate(user_input, lower = low, upper = up)

return(res)
}

测试

myfunction(2*x+4, low = 0, up = 1)
5 with absolute error < 5.6e-14

最新更新