Boucle For / production de graphique / gestion des erreurs

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Baptiste Carrere
Messages : 4
Enregistré le : 01 Mar 2019, 11:42

Boucle For / production de graphique / gestion des erreurs

Messagepar Baptiste Carrere » 06 Juin 2019, 14:54

Bonjour à tous,
Je suis nouveau dans l'utilisation du logiciel R et je souhaite vous faire part de mon probleme en espérant que vous me comprendrez.

Voici mon problème :
Je travaille sur des données de comptages avec le package rtrim et je souhaite créer une boucle for qui produit des graphiques pour chaque individu i.
Cependant, concernant un individu, le programme me renvoi un message d'erreur et celui-ci s’arrête de tourner. Je souhaite tout simplement que mon programme continue de tourner en passant à l'itération suivante sachant qu'il ne produira donc pas de graphique concernant cet individu i.

voici mon morceau de code :

Code : Tout sélectionner

m1<-list(NULL)
for(k in levels(BDD$region)){                                                     ### Je crée mes répertoires où seront rangés mes graphiques
  setwd(TRIM)
  dir.create(k,showWarnings = F)
  liens<-paste(TRIM,"/",k,sep="") 
  setwd(liens)
 
  dir.create("COMPTAGE_SITE_ANNEE",showWarnings = F)
  YO<-paste(liens,"/","COMPTAGE_SITE_ANNEE",sep="") 
  setwd(YO)
 
for (i in levels(BDD$SP)) {                        ### Je crée mes répertoires où seront rangés mes graphiques
  setwd(YO)
    dir.create("Court_Terme_2010_2018",showWarnings = F)
    ici<-paste(YO,"/","Court_Terme_2010_2018",sep="") 
    setwd(ici)
    X11()
    par(mfrow=c(4,3))                                                                 ### Je crée mes répertoires où seront rangés mes graphiques
   
  for (m in levels(as.factor(BDD$month))) {
   
    B<-droplevels(subset(BDD, region%in%k))
    BD<-droplevels(subset(B, SP%in%i))
    BD1<-droplevels(subset(BD, month%in%m))
   
      BD1$count<-  BD1$count+1                                                                        # Car le modèle n'accepte pas la valeur "0"
     
      BDD2<-tapply(BD1$count, list(BD1$site, BD1$year),sum, na.rm=TRUE)
      BDD2<-melt(BDD2)
      names(BDD2)<-c("site","year","count")
     
      m1[[i]] <- trim(count ~ site + year, data=BDD2, model=3, overdisp=TRUE)     ### Création de mon modèle mathématique
     
      plot(overall(m1[[i]]))
      title(paste(main = i,"_",m,"_",k))
     
      dev.print(png,filename=paste(i,"_TRIM_EVOLUTION_DEMO.png",sep=""),restoreConsole = TRUE,width=6000,res=600)
     
  }}}



Je vous remercie d'avance pour votre aide, en espérant que vous comprendrez ma démarche.

Bien à vous,

Baptiste Carrere

Eric Casellas
Messages : 767
Enregistré le : 06 Jan 2009, 14:59

Re: Boucle For / production de graphique / gestion des erreurs

Messagepar Eric Casellas » 06 Juin 2019, 15:11

Salut,

A priori tu devrais pouvoir faire ce que tu veux avec la fonction tryCatch (voir par exemple : https://stackoverflow.com/a/14749552)

Eric
Eric

Baptiste Carrere
Messages : 4
Enregistré le : 01 Mar 2019, 11:42

Re: Boucle For / production de graphique / gestion des erreurs

Messagepar Baptiste Carrere » 07 Juin 2019, 07:50

Super merci beaucoup, je vais donc tester ça !

Baptiste Carrere


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité