jeudi 22 février 2018

Parallel computing in R (if statement in foreach %dopar%)

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