【问题标题】:How to turn a simple text expression into a mathematical expression in R如何将简单的文本表达式转换为 R 中的数学表达式
【发布时间】:2015-05-12 09:19:11
【问题描述】:

现在我正在尝试解决一个关于建立一个函数来计算 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()函数可以计算的函数的一部分。

【问题讨论】:

  • 如果问题回答了您的需要,您可以勾选它!

标签: r function expression


【解决方案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]])
}

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

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

【讨论】:

  • 它说找不到函数 Curry()
  • 你必须导入库functional,因为Curry是这个包的一部分......因为它是写在我的代码中的;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-08
  • 1970-01-01
  • 2019-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多