2014-02-18 4 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 (порог, 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)) 
Смежные вопросы