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 :

erreur fonction mutate_att


Sujet :

R

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 210
    Points : 147
    Points
    147
    Par défaut erreur fonction mutate_att
    Le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    library(dplyr)
    ftest<-function(var) {if_else(is.na(var),'',var)  }
    t<-data.frame(x=c("1", "2", NA ,"3"),y=c("5", "6", NA ,"4"))
    t2<-t %>% mutate_at(c("x"),ftest)
    provoque le message d'erreur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Error: `false` must be a character vector, not a `factor` object
    Comment faire pour éviter cette erreur ?
    Merci

  2. #2
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Option stringsAsFactors
    Bonjour,

    Error: `false` must be a character vector, not a `factor` object
    Quand vous avez ce type d'erreur, il faut vérifier le type des variables à l'aide de la fonction str(). L'option par défaut d'import des données est stringsAsFactors=TRUE avant la version R 4.0.0 et stringsAsFactors=FALSE à partir de la version R 4.0.0.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    library(dplyr)
    ftest <- function(var) {if_else(is.na(var),'',var)}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    t <- data.frame(x=c("1", "2", NA, "3"),
                    y=c("5", "6", NA, "4"),
                    stringsAsFactors=TRUE)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    > str(t)
    'data.frame':   4 obs. of  2 variables:
     $ x: Factor w/ 3 levels "1","2","3": 1 2 NA 3
     $ y: Factor w/ 3 levels "4","5","6": 2 3 NA 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    > t %>% mutate_at(c("x"),ftest)
    Erreur : `false` must be a character vector, not a `factor` object
    Run `rlang::last_error()` to see where the error occurred.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    t <- data.frame(x=c("1", "2", NA, "3"),
                    y=c("5", "6", NA, "4"),
                    stringsAsFactors=FALSE)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    > str(t)
    'data.frame':   4 obs. of  2 variables:
     $ x: chr  "1" "2" NA "3"
     $ y: chr  "5" "6" NA "4"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    > t %>% mutate_at(c("x"),ftest)
      x    y
    1 1    5
    2 2    6
    3   <NA>
    4 3    4
    Cordialement

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 210
    Points : 147
    Points
    147
    Par défaut
    Merci !
    Je me doutais bien qu'il y avait un problème de type.
    Mais je ne savais pas comment le résoudre...
    Maintenant, je sais

  4. #4
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Conversion type variables
    Vous pouvez aussi utiliser les fonctions as.character(), as.factor(), as.numeric() pour faire les conversions.

    Attention toutefois lors du passage du type facteur au type numérique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    df <- data.frame(V1=c(2,4,6,8,10))
    df$V1.factor <- as.factor(df$V1)
    df$V2.KO <- as.numeric(df$V1.factor)
    df$V2.OK <- as.numeric(as.character(df$V1.factor))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    > df
      V1 V1.factor V2.KO V2.OK
    1  2         2     1     2
    2  4         4     2     4
    3  6         6     3     6
    4  8         8     4     8
    5 10        10     5    10
    Cordialement,

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/11/2006, 21h10
  2. [Forum] Erreur fonction mysql_result()
    Par reda93 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 01/08/2006, 10h13
  3. Réponses: 2
    Dernier message: 01/06/2006, 14h54
  4. [DOM XML] Erreur fonction load() d'un objet dom??
    Par ribrok dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 04/10/2005, 11h43
  5. méssage d'erreur fonction d'agrégat
    Par developpeur_mehdi dans le forum Langage SQL
    Réponses: 4
    Dernier message: 10/03/2004, 12h42

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