Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion: Boucle sous R

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Consultant CRM
    Inscrit en
    août 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : Conseil

    Informations forums :
    Inscription : août 2019
    Messages : 9
    Points : 6
    Points
    6

    Par défaut Boucle sous R

    Bonjour,

    je souhaite faire tourner un code R plusieurs fois en utilisant plusieurs fichiers. Je m'explique :

    J'ai un code qui me génère un nuage de point et je souhaite créer un process pour le faire automatiquement sur plusieurs fichiers.

    J'ai fichier1, fichier2 dans un dossier, et je souhaite faire une boucle qui va chercher les fichiers 1 >>> exécuter le code et donne sortie1 >>> reprendre fichier 2 >>> exécuter le code et donne sortie2.

    je pense que je dois avoir un fichier avec

    indice nom_fichier
    1 fichier_1
    2 fichier_2

    le code viendrait lire le tableau ligne par ligne pour exécuter le code pour un indice n et un fichier_n. puis génèrera une sortie indicé sortie_n.
    n est le maximum de la colonne indice...je ne trouve pas de fonction pour determiner le maximum d'une colonne dans une table.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
     
     
    for (i in 1:n){
     
     ## tâche à répéter n fois pour i variant de 1 à n
     
    }
    j'espère que je m'explique bien,

    Merci d'avance pour vos réponses,

  2. #2
    Membre averti
    Homme Profil pro
    Data scientist
    Inscrit en
    février 2017
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data scientist
    Secteur : Conseil

    Informations forums :
    Inscription : février 2017
    Messages : 180
    Points : 314
    Points
    314

    Par défaut

    Bonjour,

    Peux-tu partager le code qui fait le nuage de point pour un fichier ?

    Merci.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Consultant CRM
    Inscrit en
    août 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : Conseil

    Informations forums :
    Inscription : août 2019
    Messages : 9
    Points : 6
    Points
    6

    Par défaut

    Citation Envoyé par marou1991 Voir le message
    Bonjour,

    Peux-tu partager le code qui fait le nuage de point pour un fichier ?

    Merci.
    Oui bien sûr, je suis sur R markdown

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    ---
    title: "sortie_n"
    output: html_document
    ---
    
    ```{r setup, include=FALSE}
    knitr::opts_chunk$set(warning = FALSE, message = FALSE)
    ```
    
    
    
    ```{r,echo=FALSE}
    
    #lire le fichier boucle
    
    donnees <- read_excel("boucle.xlsx")
    
    #initialisation de la boucle soit max indice ou bien compter le nombre de ligne du fichier boucle
    
    #debut de la boucle____________________________________________________________
    
    #Importer_fichier
    
    filePath <- "fichier_n.txt"
    text <- readLines(filePath)
    
    # Charger les données comme un corpus
    
    docs <- Corpus(VectorSource(text))
    
    #La transformation du texte
    
    todoubleSpace <- content_transformer(function (x , pattern ) gsub(pattern, "   ", x))
    docs <- tm_map(docs, todoubleSpace, " " )
    
    # Convertir le texte en minuscule
    
    docs <- tm_map(docs, content_transformer(tolower))
    
    #enlever les caractères spéciaux
    
    toSpace <- content_transformer(function (x , pattern ) gsub(pattern, " ", x))
    docs <- tm_map(docs, toSpace, "/")
    docs <- tm_map(docs, toSpace, "@")
    docs <- tm_map(docs, toSpace, "-" )
    docs <- tm_map(docs, toSpace, "," )
    docs <- tm_map(docs, toSpace, ";" )
    docs <- tm_map(docs, toSpace, ":" )
    docs <- tm_map(docs, toSpace, "'" )
    
    #enlever les accents
    
    accent <- content_transformer(function (x , pattern ) gsub(pattern, "e", x))
    docs <- tm_map(docs, accent, "é")
    docs <- tm_map(docs, accent, "è")
    docs <- tm_map(docs, accent, "ê")
    accent1 <- content_transformer(function (x , pattern ) gsub(pattern, "o", x))
    docs <- tm_map(docs, accent1, "ô")
    accent2 <- content_transformer(function (x , pattern ) gsub(pattern, "a", x))
    docs <- tm_map(docs, accent2, "â")
    accent2 <- content_transformer(function (x , pattern ) gsub(pattern, "a", x))
    docs <- tm_map(docs, accent2, "à")
    accent3 <- content_transformer(function (x , pattern ) gsub(pattern, "c", x))
    docs <- tm_map(docs, accent2, "ç")
    accent3 <- content_transformer(function (x , pattern ) gsub(pattern, "i", x))
    docs <- tm_map(docs, accent2, "î")
    
    # Supprimer les nombres
    docs <- tm_map(docs, removeNumbers)
    # Supprimer les ponctuations
    docs <- tm_map(docs, removePunctuation)
    
    ```
    
    
    
    ```{r,echo=FALSE,results='hide'}
    
    #Construire la matrice des mots
    
    dtm <- TermDocumentMatrix(docs)
    m <- as.matrix(dtm)
    v <- sort(rowSums(m),decreasing=TRUE)
    d <- data.frame(word = names(v),freq=v,row.names = NULL)
    
    # Supprimer votre propre liste de mots non désirés
    
    filePath <- "listedemots.txt"
    motsasupr <- readLines(filePath)
    motsasupr1 <- Corpus(VectorSource(motsasupr))
    dtm1 <- TermDocumentMatrix(motsasupr1)
    m1 <- as.matrix(dtm1)
    v1 <- sort(rowSums(m1),decreasing=TRUE)
    d1 <- data.frame(word = names(v1),freq=v1,row.names = NULL)
    
    #supprimer les mots 
    d1$temp <- 1
    nuage <- merge(d, d1, by=c("word"), all.x=TRUE)
    nuage <- nuage[is.na(nuage$temp), ]
    
    ```
    
    
    
    ```{r,echo=FALSE}
    
    #Générer le nuage de mots
    
    set.seed(1234)
    wordcloud(words = nuage$word, freq = d$freq, min.freq = 1,
            max.words=50, random.order=FALSE, rot.per=0.10, 
              colors=brewer.pal(10,"RdBu"))
    
    ```
    #fin de la boucle__________________________________________________________________________________________________

  4. #4
    Membre éclairé
    Homme Profil pro
    Chercheur
    Inscrit en
    décembre 2015
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2015
    Messages : 283
    Points : 704
    Points
    704

    Par défaut

    Si ton problème est de générer le nom du fichier à ouvrir, la solution est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for( i in 1:n) {
       nom.fichier <- paste( "fichier", i, sep="_")
       ...
    }

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Consultant CRM
    Inscrit en
    août 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : Conseil

    Informations forums :
    Inscription : août 2019
    Messages : 9
    Points : 6
    Points
    6

    Par défaut

    Merci beaucoup ça m'a bien débloqué

    du coup mon programme est devenu le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    #lire le fichier boucle
    library("readxl")
    donnees <- read_excel("boucle.xlsx")
    
    #initialisation de la boucle 
    
    n<-nrow(donnees)
    #lire le nom du fichier
    
    for( i in 1:n) {
      library("stringr")
      library("tm")
      library("SnowballC")
      library("wordcloud")
       library("RColorBrewer")
       library("NLP")
       library("tm")
      
      
       nom <- paste( "fichier", i,sep="_")
       type_fichier <- paste( ".txt")
       fichier<-paste(nom,type_fichier,sep="")
       filePath <- fichier
       text <- readLines(filePath)
       docs <- Corpus(VectorSource(text))
       
       #La transformation du texte
    
    todoubleSpace <- content_transformer(function (x , pattern ) gsub(pattern, "   ", x))
    docs <- tm_map(docs, todoubleSpace, " " )
    # Convertir le texte en minuscule
    docs <- tm_map(docs, content_transformer(tolower))
    
    docs <- tm_map(docs, removeWords, c())
    
    toSpace <- content_transformer(function (x , pattern ) gsub(pattern, " ", x))
    docs <- tm_map(docs, toSpace, "/")
    docs <- tm_map(docs, toSpace, "@")
    docs <- tm_map(docs, toSpace, "-" )
    docs <- tm_map(docs, toSpace, "," )
    docs <- tm_map(docs, toSpace, ";" )
    docs <- tm_map(docs, toSpace, ":" )
    docs <- tm_map(docs, toSpace, "'" )
    
    accent <- content_transformer(function (x , pattern ) gsub(pattern, "e", x))
    docs <- tm_map(docs, accent, "é")
    docs <- tm_map(docs, accent, "è")
    docs <- tm_map(docs, accent, "ê")
    accent1 <- content_transformer(function (x , pattern ) gsub(pattern, "o", x))
    docs <- tm_map(docs, accent1, "ô")
    accent2 <- content_transformer(function (x , pattern ) gsub(pattern, "a", x))
    docs <- tm_map(docs, accent2, "â")
    accent2 <- content_transformer(function (x , pattern ) gsub(pattern, "a", x))
    docs <- tm_map(docs, accent2, "à")
    accent3 <- content_transformer(function (x , pattern ) gsub(pattern, "c", x))
    docs <- tm_map(docs, accent2, "ç")
    accent3 <- content_transformer(function (x , pattern ) gsub(pattern, "i", x))
    docs <- tm_map(docs, accent2, "î")
    
    # Convertir le texte en minuscule
    docs <- tm_map(docs, content_transformer(tolower))
    # Supprimer les nombres
    docs <- tm_map(docs, removeNumbers)
    # Supprimer les ponctuations
    docs <- tm_map(docs, removePunctuation)
       #dataframe
       dtm <- TermDocumentMatrix(docs)
       m <- as.matrix(dtm)
       v <- sort(rowSums(m),decreasing=TRUE)
       d <- data.frame(word = names(v),freq=v,row.names = NULL)
      
       filePath <- "listedemots.txt"
       motsasupr <- readLines(filePath)
       motsasupr1 <- Corpus(VectorSource(motsasupr))
       dtm1 <- TermDocumentMatrix(motsasupr1)
       m1 <- as.matrix(dtm1)
       v1 <- sort(rowSums(m1),decreasing=TRUE)
       d1 <- data.frame(word = names(v1),freq=v1,row.names = NULL)
       
       #supprimer les mots 
      d1$temp <- 1
      nuage <- merge(d, d1, by=c("word"), all.x=TRUE)
      nuage <- nuage[is.na(nuage$temp), ]
      
           nom1 <- paste( "sortie", i,sep="_")
                  type_fichier1 <- paste( ".csv")
                  sortie<-paste(nom1,type_fichier1,sep="")
                  
                  write.table(nuage, file = sortie, append = FALSE, quote = TRUE, sep = " ",
                  eol = "\n", na = "NA", dec = ".", row.names = TRUE,
                  col.names = TRUE, qmethod = c("escape", "double"),
                  fileEncoding = "")
    
    
    
    
     #Générer le nuage de mots
    #library("wordcloud")
     #set.seed(1234)
     #wordcloud(words = nuage$word, freq = d$freq, min.freq = 1,
     #max.words=50, random.order=FALSE, rot.per=0.10, 
      #colors=brewer.pal(10,"RdBu"))
    
    }
    Ce que je cherche aussi à faire c'est de l'enregistrer dans un répertoire à chaque itération. Pour cela à la place d'utiliser wordcloud je voudrais faire une sortie Excel avec un nom de fichier incrémenté par le numéro d'itération. J'utilise write.table que j'ai ajouté dans le code plus haut. mais ça me donne une erreur que je n'arrive pas à régler.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Error: package or namespace load failed for ‘xlsx’:
     .onLoad a échoué dans loadNamespace() pour 'rJava', détails :
      appel : fun(libname, pkgname)
      erreur : JAVA_HOME cannot be determined from the Registry
    In addition: There were 22 warnings (use warnings() to see them)
    Est-ce que vous voyez d'où ça peut venir SVP?

    Merci par avance,

    Merci

  6. #6
    Membre éclairé
    Homme Profil pro
    Chercheur
    Inscrit en
    décembre 2015
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2015
    Messages : 283
    Points : 704
    Points
    704

    Par défaut

    Je n'utilise jamais de fichiers au format Excel, je les enregistre toujours sous le format csv, sachant qu'Excel sait, si nécessaire, ouvrir ce type de fichier.

    Quant à l'erreur, elle est due à la machine Java. Souvent, cela provient qu'on utilise une machine Java 32 bits avec une version de R sous 64 bits ou l'inverse. Donc, commence par vérifier cela.

    Pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    type_fichier <- paste( ".txt")
    fichier<-paste(nom,type_fichier,sep="")
    Tu peux simplifier par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier <- paste0( nom, ".txt")
    Tu peux même construire ton nom de fichier en une seule fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filePath <- paste0( "fichier_", i, ".txt")

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Consultant CRM
    Inscrit en
    août 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : Conseil

    Informations forums :
    Inscription : août 2019
    Messages : 9
    Points : 6
    Points
    6

    Par défaut

    Un très grand MERCI

    je vais mettre la discussion en résolue

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Traiter 100 fichiers avec une boucle sous VBA excel
    Par sebastien06 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/04/2008, 09h39
  2. Réponses: 1
    Dernier message: 18/02/2008, 13h51
  3. Quel langage pour faire des boucles sous FTP ?
    Par Mourne dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 04/07/2007, 16h33
  4. comment faire tourner une video en boucle sous Firefox?
    Par samsso2006 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 11/04/2007, 12h14
  5. lecture en boucle sous firefox
    Par ptichat dans le forum Flash
    Réponses: 4
    Dernier message: 19/06/2006, 10h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo