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