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 :

Problème fonction sprintf


Sujet :

R

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Points : 50
    Points
    50
    Par défaut Problème fonction sprintf
    Bonjour,

    Je formate des résultats de R avec la fonction sprintf().
    Je signifie les types de chaque colonne (numéric, integer et character) comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    t01[,2]<-sprintf("%10s",as.character(t01[,2]))
    t01[,3]<-sprintf("%4d",as.integer(t01[,3]))
    t01[,4]<-sprintf("%5.1f",as.numeric(t01[,4]))
    Puis, j'écris les résultats dans un fichier avec write.table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    write.table(t01,file=nom, row.names=F, col.names=F,sep=";")
    Or dans mon fichier final, toutes mes colonnes sont de type "character".

    Je ne comprends pas pourquoi.... Avez vous une idée?
    Merci!

  2. #2
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Bonjour,

    Citation Envoyé par maxoup Voir le message
    Je formate des résultats de R avec la fonction sprintf().
    La réponse est dans la question : dès lors qu'il s'agit de formater une sortie, on passe à une représentation en caractères.

    (Voir en particulier la section "Value")
    Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
    ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)

    Une solution vous convient ? N'oubliez pas le tag


    )><))))°>

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Points : 50
    Points
    50
    Par défaut
    Ok mais lorsque que j'inverse la fonction sprintf et les as. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    t01[,2]<-as.character(sprintf("%010s",t01[,2]))
    t01[,3]<-as.integer(sprintf("%04d",t01[,3]))
    t01[,4]<-as.numeric(sprintf("%05.1f",t01[,4]))
    Il annule le format précisé dans la fonction sprintf

  4. #4
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Effectivement, mais c'est normal : un nombre et sa représentation écrite ce n'est pas exactement la même chose.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t01[,4]<-as.numeric(sprintf("%05.1f",t01[,4]))
    va te stocker sous forme numérique quelque chose lu à partir d'une chaîne de caractère... typiquement ça revient à faire un arrondi (perte d'information) d'une façon bien compliquée.
    En fait c'est même plus "vicieux" que ça : comme tu cherches à stocker des "character", "numeric" et "integer" dans une même colonne, ça va tout te mettre dans un format commun (sans doute "character").

    En fait, où est le problème d'avoir des "character" dans ton fichier de sortie ?
    Si tu ajustes l'option "quote", tu devrais pouvoir retirer les guillemets et lire ton fichier comme s'il contenait des nombres (si c'est bien ce que tu souhaites faire).
    Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
    ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)

    Une solution vous convient ? N'oubliez pas le tag


    )><))))°>

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Points : 50
    Points
    50
    Par défaut
    Sujet résolu!

    Les fichiers de sortie était destiné à un programme d'un autre langage.
    Au finale, ce programme lit bien mes fichiers en type caractère.
    Le problème venait d'ailleurs.

    Merci pour votre aide!

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

Discussions similaires

  1. Problème : Fonctions et commande Execute
    Par bubi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/11/2005, 11h01
  2. Problème fonction SDL
    Par seeme dans le forum SDL
    Réponses: 2
    Dernier message: 06/11/2005, 20h22
  3. Problème fonction PL/SQL
    Par SSJ17Vegeta dans le forum PL/SQL
    Réponses: 2
    Dernier message: 29/10/2005, 21h14
  4. Problème fonction et trigger sous 7.2
    Par anoukhan dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/06/2005, 22h53
  5. Réponses: 2
    Dernier message: 20/08/2004, 17h10

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