Je tente d'exécuter le code suivant (utilisé à des fins de eWAS) dans un format parallèle:doParallel semble corrompt sortie pour une raison inconnue
registerDoParallel(2)
combined <- foreach(i = 28:78, .combine=rbind) %dopar%
{
mm<-rep(NA,412)
FIDunique<-unique(pheno$FID)
for(j in FIDunique)
{
nn<-which(pheno1$FID==j)
mm[nn]<-mean(pheno1[nn,i])
}
tt4<-which(!is.na(mm))
if(length(tt4)>19 & length(table(pheno1[,i]))>1)
{
meth<-pheno1[tt4,i]
mm<-mm[tt4]
if(length(levels(factor(pheno1$smoking)))<2)
{
lme2<-tryCatch(lme(I(meth-mm)~delta_residSpine+I(DNA_year-AGE_year)+CD8T+CD4T+NK+Bcell+Mono+Gran,random=~1|FID, control=lmeControl(msMaxIter=50000,opt="optim"), data=pheno1[tt4,]),error = function(e) rep (NaN,1))
}
else
{
lme2<-tryCatch(lme(I(meth-mm)~delta_residSpine+I(DNA_year-AGE_year)+factor(smoking)+CD8T+CD4T+NK+Bcell+Mono+Gran,random=~1|FID, control=lmeControl(msMaxIter=50000,opt="optim"), data=pheno1[tt4,]),error = function(e) rep (NaN,1))
}
if(!is.na(lme2)) out18[i-27,2:5]<-summary(lme2)$tTable[2,-3]
rm(mm,nn,meth,lme2)
}
out18[i-27,6]<-length(tt4)
out18[i-27,]
}
La question que je vais avoir est que lorsque j'utilise% faire% dans la deuxième ligne, le programme exécute parfaitement et « combiné » contient le the correct output.
Cependant quand j'utilise% dopar% (comme il est indiqué dans le code ci-dessus), the middle four columns of combined dissapear. Je suppose que cela est dû à ces quatre colonnes étant assigné basé sur un tryCatch? Je suis coincé là-dessus depuis quelques jours et j'ai vraiment besoin de progresser.
Il est aussi ne vaut rien quand je lance le programme en tant que% ne%, je reçois l'avertissement
Avertissement si out18 [i - 27, 2 (is.na (lme2)!): 5] < - résumé (lme2) TTABLE $ [2,: la condition a une longueur> 1 et seul le premier élément sera utilisé
pour chaque itération, mais je ne suis pas du tout lors de l'exécution sous % dopar%. Excusez-moi si je n'ai pas donné assez d'informations sur ce que sont les variables, j'essaie de divulguer le moins possible sur les informations réelles traitées pour des raisons éthiques.
il est pas facile de suivre votre problème. Sur quoi es-tu? '% do%' et '% dopar%' n'ont certainement pas le même comportement, et '% dopar%' peut dépendre des Os. – clemlaflemme
Votre problème vient probablement du fait que vous essayez de mettre à jour une valeur en utilisant 'foreach' (à savoir le tableau' out18') qui n'a pas de sens. Essayez plutôt d'utiliser un nouveau vecteur et de le renvoyer uniquement. Les options '.combine' donneront le résultat correctement – clemlaflemme