IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

R Discussion :

Appliquer une opération à tous les fichiers d'un répertoire


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 39
    Par défaut Appliquer une opération à tous les fichiers d'un répertoire
    Bonjour à tous,

    Je suis débutant dans R. Afin de vérifier mes fichiers de données (qui sont des tableaux avec des valeurs séparées par des espaces en format .txt), je cherche à compter le nombre de colonnes dans chacun de ces fichiers.

    J'ai donc réalisé la formule suivante qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ncol(read.table("mon_fichier.txt", header = FALSE, sep = ""))
    Le problème, c'est que j'ai 257 fichiers à vérifier ! Autrement dit, il me faudrait automatiser cette fonction pour que j'obtienne le nombre de colonnes dans chacun de ces fichiers.

    Pourriez-vous m'aider ?

    Merci beaucoup par avance.

  2. #2
    Membre Expert
    Inscrit en
    Novembre 2009
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 707
    Par défaut Appliquer une opération à tous les fichiers d'un répertoire
    Bonjour,

    Une proposition de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    liste_fichiers <- list.files("D:/data", pattern="txt")
    n=length(liste_fichiers)
    nbcol_fichiers <- data.frame(matrix(NA,ncol = 2, nrow = n))
    colnames(nbcol_fichiers) <- c("fichier","nbcol")
    for (i in 1:n) 
      {
      nbcol_fichiers[i,1] <- liste_fichiers[i]
      nbcol_fichiers[i,2] <- ncol(read.table(liste_fichiers[i], header = FALSE, sep = ""))
      }
    nbcol_fichiers
    Cordialement,

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 39
    Par défaut
    Merci beaucoup.

  4. #4
    Membre émérite
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    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 : 327
    Par défaut
    Le code de mgdondon est valide mais il est aussi possible d'utiliser les fonctions de liste de R à la place de la boucle for :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbcol_fichiers <- vapply( liste_fichiers, FUN=function( nom) ncol( read.table( nom, header=FALSE, sep="")), FUN.VALUE=1)
    on obtient alors un vecteur nommé

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

Discussions similaires

  1. [XL-2003] Exécuter une macro sur tous les fichiers d'un dossier.
    Par ahmet dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/10/2009, 09h49
  2. Réponses: 3
    Dernier message: 04/05/2009, 08h28
  3. exécuter une commande sur tous les fichiers des sous dossiers
    Par Concombre Masqué dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 05/03/2009, 01h15
  4. Réponses: 3
    Dernier message: 17/08/2007, 11h20
  5. Réponses: 18
    Dernier message: 22/06/2006, 17h55

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