каждый.
Я хотел бы спросить кое-что о том, как избежать возможного сообщения об ошибке в цикле for.Я запускаю симуляцию, и в некоторых повторениях может быть ошибка, которая вызовет сбой и остановит всю процедуру, я просто хочу автоматически перейти к следующей итерации и отбросить «плохие» повторения из моих результатов.
The code is as below.
> for(j in 1:100){
> p<-YHatMulti(theta,X)
> z=dim(p)[1]
> A[[1,1]]<-matrix(apply(apply(cbind(p,X,((1+m-1):(z+m-1))),1,function(x){-x[1]*(1-x[1])*x[3:6]%*%t(x[3:6])*lambda^(((z+m-1)-x[7])/(1000-1)^r)}),1,sum),4,4)
> A[[2,2]]<-matrix(apply(apply(cbind(p,X,((1+m-1):(z+m-1))),1,function(x){-x[2]*(1-x[2])*x[3:6]%*%t(x[3:6])*lambda^(((z+m-1)-x[7])/(1000-1)^r)}),1,sum),4,4)
> A[[1,2]]<-matrix(apply(apply(cbind(p,X,((1+m-1):(z+m-1))),1,function(x){x[1]*(x[2])*x[3:6]%*%t(x[3:6])*lambda^(((z+m-1)-x[7])/(1000-1)^r)}),1,sum),4,4)
> A[[2,1]]<-A[[1,2]]
> A_rows<-lapply(1:2,bind_A_row) Amatrix<-do.call(cbind,A_rows)
> Amatrix[is.na(Amatrix)]<-0
> B<--apply(cbind(t(sweep(t(X),2,YMat[,1]-p[,1],'*')),t(sweep(t(X),2,YMat[,2]-p[,2],'*')))*(lambda^(((z+m-1)-(1+m-1):(z+m-1))/1000^r)),2,sum)
> B<-as.matrix(B) B[is.na(B)]<-0
> #B<-B+t(Amatrix%*%(as.matrix(as.vector(t(theta)))))
> theta<-as.vector(t(theta))+t(ginv(Amatrix)%*%as.matrix(B))
> theta<-matrix(data = theta, ncol= ncol(X), nrow = typeY-1, byrow =
> TRUE)
}
Последняя третья строка использует "ginv".Я обнаружил, что иногда матрица B будет иметь элемент NA.Таким образом цикл закончится.
Может ли кто-нибудь помочь мне использовать "try", чтобы пропустить эту ошибку?Поскольку я занимаюсь симуляцией, я могу пропустить эту ошибку и перейти к следующей симуляции.Большое спасибо.