如何将简单的文本表达式转换为R中的数学表达式

时间:2015-05-12 09:19:12

标签: r function expression

现在我正在尝试解决有关建立函数来计算R中生成函数的时刻的日志的问题。所需的程序是用户可以随机输入任意随机密度函数f(x)变量。但是,我不知道如何让R识别函数表达式的输入字符串,比如说“x ^ 2-4 * x”,并把它变成一个可行的数学表达式或者说是函数。有人可以帮忙吗?

mgf <- function(expr, t, from=NULL, to=NULL){
moment <- NULL
    for (i in 1:length(t)){
        moment <- c(moment,integrate(exp(x*t[i])*(expr),lower=from,upper=to))
    }
return(moment)
}

这是我目前正在使用的代码。显然,它不会起作用。我想要的是用户可以输入表达式,如x^2-4*x,这是expr的值,然后将expr转换为integrate()函数可以评估的函数的一部分。

1 个答案:

答案 0 :(得分:1)

您可以尝试:

library(functional)

mgf = function(stringFormula, t, from=NULL, to=NULL)
{
    f = function(x, i) exp(x*i)*eval(parse(text=stringFormula))
    sapply(t, function(u) integrate(Curry(f, i=u), lower=from, upper=to)[[1]])
}

关键是,您需要在x参数中将字符串stringFormula作为变量传递:

mgf("x^2-4*x", 1:5, from=0, to=1)
#[1]  -3.281718  -6.791792 -14.652785 -32.698902 -74.976232