[英]How to turn a simple text expression into a mathematical expression in R
現在,我正在嘗試解決一個有關建立函數以計算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()
函數可以評估的函數的一部分。
你可以試試:
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
參數stringFormula
字符串x
作為變量傳遞:
mgf("x^2-4*x", 1:5, from=0, to=1)
#[1] -3.281718 -6.791792 -14.652785 -32.698902 -74.976232
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.