R OPTIM函数如何正常工作?

R OPTIM函数如何正常工作?,r,R,在这里,我的函数nd工作正常,但当我在OPTIM函数中使用它时,它给出了错误。 我犯了什么错?代码是 ta=c(2.0, 4.0); n=500; x=runif(n); TT=rexp(n,1); D=matrix(0,n,1); for (j in 1:n) { D[j]=ifelse(TT[j]>x[j],1,0) } xt=matrix(0,length(ta),1); for (i

在这里,我的函数nd工作正常,但当我在OPTIM函数中使用它时,它给出了错误。 我犯了什么错?代码是

ta=c(2.0, 4.0);       
n=500;                

x=runif(n);        

TT=rexp(n,1);       
D=matrix(0,n,1);        

for (j in 1:n) {
D[j]=ifelse(TT[j]>x[j],1,0)
}

xt=matrix(0,length(ta),1);
for (ii in 1:length(ta)) {
 xt[ii]=sum(I(TT<ta[ii])*D)      
}

nd<- function(params) {
tta=c(params[1],params[2]);
ss1=0;

ss1=xt[1]*log(xt[1]/sum(pmin(TT,tta[1])))+(xt[2]-xt[1])*log((xt[2]-xt[1])/sum((pmin(TT,tta[2])-tta[1])*I(TT>tta[1])))+(sum(D)-xt[2])*log((sum(D)-xt[2])/sum((TT-tta[2])*I(TT>tta[2])));
ll=-ss1;

return (ll)  
 }


nn<-optim(par=c(0.5,2.5),fn=nd, method = "L-BFGS-B", lower=c(0.01,2.01), upper=c(3.99, 9.99));
我发现了以下错误

optimpar=c0.5、2.5、fn=nd、方法=L-BFGS-B、下限=c0.01中的错误:
L-BFGS-B需要有限的“fn”值

你能给出错误消息,以及关于它发生在哪里的更多细节吗?我想我不应该批评某人发布了没有抛出错误的代码,但是在for循环中使用ifelse很难查看。此外,您应该发布错误消息,在本例中,这表明您正在获得Inf结果。通常,第一步是检查是否被零除。optimpar=c0.5、2.5、fn=nd、方法=L-BFGS-B、下限=c0.01中的错误:L-BFGS-B需要有限的“fn”值