现在我正在尝试解决一个关于建立一个函数来计算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()函数可以计算的函数的一部分。
发布于 2015-05-12 18:28:25
您可以尝试:
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]])
}关键是,您需要在stringFormula参数中将字符串x作为变量传递:
mgf("x^2-4*x", 1:5, from=0, to=1)
#[1] -3.281718 -6.791792 -14.652785 -32.698902 -74.976232https://stackoverflow.com/questions/30186638
复制相似问题