I want to update my four variables (Z1, Z2, IVtmp$differror1, IVtmp$differror2) by groups (i) conditional on a if statement.
foreach(i=unique(IVtmp$scidx)) %dopar% {
numerator=sum(P1new[IVtmp$scidx==i])+sum(P2new[DATA$scid==i])
denominator=sum(P1old[IVtmp$scidx==i])+sum(P2old[DATA$scid==i])
probab=exp(numerator-denominator)
if (runif(1)<probab){
Z1[DATA$scid==i]=e1new[DATA$scid==i]
Z2[DATA$scid==i]=e2new[DATA$scid==i]
IVtmp$differror1[IVtmp$scidx==i]=differror1new[IVtmp$scidx==i]
IVtmp$differror2[IVtmp$scidx==i]=differror2new[IVtmp$scidx==i]
change=change+1
} else{
Z1[DATA$scid==i]=e1old[DATA$scid==i]
Z2[DATA$scid==i]=e2old[DATA$scid==i]
IVtmp$differror1[IVtmp$scidx==i]=differror1old[IVtmp$scidx==i]
IVtmp$differror2[IVtmp$scidx==i]=differror2old[IVtmp$scidx==i]
}
}
But it seems I couldn't do if statement inside the foreah loop. Can anyone help?
Thanks
Aucun commentaire:
Enregistrer un commentaire