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

4

我现在正在解决一个与在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()函数可以评估。

如果这个问题回答了您的需求,您可以勾选它! - Colonel Beauvel
1个回答

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

它说找不到函数Curry()。 - NamelessGods
你必须导入 functional 库,因为 Curry 是该包的一部分...就像我代码中写的那样 ;) - Colonel Beauvel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接