在R中的uniroot中调用具有多个参数的函数

在R中的uniroot中调用具有多个参数的函数,r,R,我试图调用一个在uniroot中包含多个参数的函数,以求解并找到x的值。代码如下: 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) * pri

我试图调用一个在uniroot中包含多个参数的函数,以求解并找到x的值。代码如下:

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也被传递。如何解决此问题?

将函数包装到另一个包含一个参数的函数中:

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

将函数包装到另一个接受一个参数的函数中:

uniroot(function(x) threshold(mean1,sigma1,mean2,sigma2, priors1, priors2,x),c(0,5))
uniroot为此类函数提供一个附加参数。这里,它应该是unirootthreshold,c0,5,mu1=mean1,sigma1=sigma1,mu2=mean2,sigma2=sigma2,prior1=priors1,prior2=priors2。UniRoot为此类函数提供了一个附加参数。这里,它应该是unirootthreshold,c0,5,mu1=mean1,sigma1=sigma1,mu2=mean2,sigma2=sigma2,prior1=priors1,prior2=priors2