簡體   English   中英

如何在R中將簡單的文本表達式轉換為數學表達式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM