我正在尝试在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