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 :

importer avec scan()


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Par défaut importer avec scan()
    Bonjour,

    J'ai un tableau "énorme" (i.e > 100.000.000 lignes et 8 colonnes), avec la fonction read.table cela s'avère très long. J'ai donc opté pour scan().
    Je veux importer ce tableau, le sauvegarder et pouvoir le restaurer.

    * pour l'importer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    you <- as.data.frame( matrix (data = scan(file = "toto",what = "char", sep = "\t"),nc=4 ) )
    Read 20 items

    [1] "V1" "V2" "V3" "V4"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
             V1        V2        V3        V4
    1       nom        98         0     94.06
    2    taille         0     99.01 id_4#AGTC
    3        nb     97.03 id_3#AGTC        99
    4        Id id_2#AGTC       100         3
    5 id_1#AGTC       100         5     95.05

    ce que je ne comprend pas, c'est pourquoi en lançant you je ne retrouve pas la structure de mon tableau?


    * pour sauvegarder :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    save(you, file = "you.RData")
    pour restaurer :

  2. #2
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut
    Bonjour,

    Pour le problème de formatage, il suffit d'ajouter le paramètre "byrow" de la fonction "matrix" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    you <- as.data.frame( matrix (data = scan(file = "toto",what = "character", sep = "\t"),ncol=4, byrow=TRUE ) )
    Pour plus d'infos, voir l'aide de la fonction :

    Pour la modification des noms de colonnes, on peut par exemple procéder comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    you <- matrix (data = scan(file = "toto",what = "char", sep = "\t"),nc=4,byrow=TRUE )
    colnames(you)<-you[1,]
    you<-you[-1,]
    you<-as.data.frame(you) # si vous voulez absolument un data.frame
    Enfin, n'oubliez pas que bien que le forum soit là pour vous aider, cela ne fait pas de mal d'effectuer quelques recherches de son côté avant de venir poster sa question.

    Bonne continuation


    Cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Par défaut
    Merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Par défaut
    Bonjour,

    j'ai lancé ma commande pour importer mon fichier et j'obtiens le message ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tempsimport <- system.time(you <- as.data.frame( matrix (data = scan(file = "toto",what = "char", sep = "\t"),ncol=8, byrow=TRUE ) ))
    Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
    negative length vectors are not allowed


    Mon fichier est très gros (>100.000.000 lignes et 8 colonnes), j'ai effectué des grep sur celui-ci afin de voir si j'avais la présence de valeurs négatives, mais à priori non. J'ai regardé sur le net, mais en vain.

  5. #5
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut
    Bonjour,

    Citation Envoyé par pontarose Voir le message
    Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
    negative length vectors are not allowed


    Mon fichier est très gros (>100.000.000 lignes et 8 colonnes), j'ai effectué des grep sur celui-ci afin de voir si j'avais la présence de valeurs négatives
    L'erreur signalée par R ne concerne pas d'éventuelles valeurs négatives dans votre jeu de données mais des longueurs de vecteurs (negative length vectors) qui sont considérées comme négatives dans votre code. Pourquoi, ça c'est une autre histoire...

    Peut-être que cela est dû à un problème de séparateur de champ... Votre jeu de données a-t-il bien 8 colonnes séparées par des tabulations?
    Avez-vous sinon essayé la même commande mais sans passer par le data.frame, ie. :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    you <- matrix (data = scan(file = "toto",what = "char", sep = "\t"),ncol=8, byrow=TRUE ) )
    Enfin, êtes-vous sûr qu'il soit possible de charger un fichier aussi volumineux avec R?? En effet, il me semble que dans l'aide de la fonction "scan" il est indiqué qu'il y a une taille maximum pour les données à charger...

    Bon bah en tout cas, bonne continuation


    Cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Par défaut
    Bonjour,

    Merci.
    J'ai essayé la commande sans passer par les data.frame et cela fonctionne!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    you <- matrix (data = scan(file = "toto",what = "char", sep = "\t"),ncol=4, byrow=TRUE ) )

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

Discussions similaires

  1. Importer avec Ogre / Gestion des collisions
    Par alex6891 dans le forum Ogre
    Réponses: 9
    Dernier message: 19/02/2006, 17h43
  2. Importation avec generation de table erreur
    Par uloaccess dans le forum Access
    Réponses: 7
    Dernier message: 28/11/2005, 18h32
  3. quel format doit avoir une BD pour l'importer avec copy?
    Par daknoom dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 03/02/2005, 19h41
  4. Problème d'import avec l'interface sql server
    Par moutanakid dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/08/2004, 16h00
  5. PB d'import avec les ActiveX sous BCB6
    Par dergen dans le forum C++Builder
    Réponses: 4
    Dernier message: 29/11/2002, 10h18

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