首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中将简单的文本表达式转换为数学表达式

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

Stack Overflow用户
提问于 2015-05-12 17:19:12
回答 1查看 298关注 0票数 4

现在我正在尝试解决一个关于建立一个函数来计算R中矩母函数的对数的问题,所需的步骤是用户可以输入任意具有随机变量区间的随机密度函数f(x)。然而,我不知道如何让R识别函数表达式的输入字符串,例如"x^2-4*x",并将其转换为可工作的数学表达式或表示函数。有人能帮上忙吗?

代码语言:javascript
复制
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()函数可以计算的函数的一部分。

EN

回答 1

Stack Overflow用户

发布于 2015-05-12 18:28:25

您可以尝试:

代码语言:javascript
复制
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作为变量传递:

代码语言:javascript
复制
mgf("x^2-4*x", 1:5, from=0, to=1)
#[1]  -3.281718  -6.791792 -14.652785 -32.698902 -74.976232
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30186638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档