我想编写一个R函数,它接受一个数学函数x
并返回一个新函数x
作为输出.例如:
输入应作为数学函数(或关系)传入x
:
g <- x^2 + 9*x + log(x)
结果输出应该是:
function(x) (exp(g))
即我想回到原来的功能的象征性指数表达x
,即exp(x^2 + 9*x + log(x))
在这个说明性的例子
理想情况下它会返回函数对象:
function(x) (exp(x^2 + 9*x + log(x)))
我尝试如下:
test <- function(g){ h <- function(x){exp(g)} return(h) } m <- test(x^2 + 9*x + log(x)) m(10)
所以m(10)应该返回:
exp(10^2 + 9*10 + log(10))
在这种情况下是exp(192.3026).
有人能说明怎么做吗?
您可以使用包功能:
library(functional) fun <- Compose(function(x) x^2 + 9*x + log(x), exp) fun(1) #[1] 22026.47
这是一种方法:
test <- function(e) { ee <- substitute(e) eee <- substitute(exp(X), list(X=ee)) f <- function(x) {} body(f) <- eee environment(f) <- parent.frame() f } ## Check that it works m <- test(x^2 + 9*x + log(x)) m # function (x) # exp(x^2 + 9 * x + log(x)) m(1) # [1] 22026.47 m(1) == exp(10) # [1] TRUE