2014-02-18 45 views
1

我試圖用uniroot中的多個參數調用一個函數來解決和找到x的值。下面的代碼,在uniroot中調用一個具有多個參數的函數R

mean1 = 0 
mean2 = 1 

sigma1 = 0.5 
sigma2 = 0.5 

priors1 = 0.6 
priors2 = 0.1 

threshold = function(mu1, sigma1, mu2, sigma2, prior1, prior2, x) { 
    (dnorm(x,mu1,sigma1) * prior1 - dnorm(x, mu2, sigma2) * prior2) 
} 

uniroot(threshold(mean1,sigma1,mean2,sigma2, priors1, priors2), c(0,5)) 

但是對uniroot的調用失敗,因爲該函數也期望x被傳遞。我如何解決這個問題?

+1

'uniroot'會對這些功能的「附加參數」的說法。在這裏,它應該是'uniroot(threshold,c(0,5),mu1 = mean1,sigma1 = sigma1,mu2 = mean2,sigma2 = sigma2,prior1 = priors1,prior2 = priors2) –

回答

3

裹在另一個函數,有一個參數的函數:

uniroot(function(x) threshold(mean1,sigma1,mean2,sigma2, priors1, priors2,x),c(0,5)) 
相關問題