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 :

Plusieurs multiples en 1 coup


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2003
    Messages
    554
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 554
    Par défaut Plusieurs multiples en 1 coup
    Bonjour,
    J'ai un vecteur du genre V=c('A','ABC','AB','AA','CBA','ABC','BB','CC','CBA','AB','AA','CBA','B','ABC','AB','AA').
    Je voudrais remplacer toutes les occurences de BB par 1 et celles de CBA par 2.
    Mon résultat final serait donc V=c('A','ABC','AB','AA','2','ABC','1','CC','2','AB','AA','2','B','ABC','AB','AA').
    J'ai essayé avec gsub, en faisant gsub(c('BB','CBA'),c('1','2'),V),
    mais ça ne fonctionne pas, alors que gsub('BB','1',V) et gsub('CBA','2',V) fonctionnent.
    Je peux donc faire gsub('BB','1',(gsub('CBA','2',V)), mais ça ne va pas être élégant si j'ai plus de 2 types de mots à remplacer.
    Je voudrais donc faire mes remplacement en une seule fois,
    J'ai essayé aussi c('1','2')[match(V,c('BB','CBA'))],
    mais là encore ça bogue, il me met des NA là où il ne trouve pas la correspondance.
    Est-ce que quelqu'un aurait une idée ?

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut
    une solution , mais avec le package stringr
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stringr::str_replace_all(V,c(BB="1",CBA="2"))
    cdlt

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut
    une autre réponse en R de base

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    replace(
                   V ,
                   which(V%in% c("BB","CBA")) ,
                  c("1","2")[na.omit(match(V,c("BB","CBA")))]
                  )

  4. #4
    Membre éclairé
    Inscrit en
    Novembre 2003
    Messages
    554
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 554
    Par défaut
    Deux solutions pour le prix d'une : super !
    J'aime bien la 1ère solution avec la fonction str_replace_all.
    Elle oblige à utiliser un package (stringr), mais elle est élégante.
    Merci Xavier-Pierre

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/09/2006, 18h55
  2. fermer plusieur fenetre d'un coup
    Par youcefharoun dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 08/11/2005, 09h46
  3. comment executer plusieurs .sql d'un coup ?
    Par roninou dans le forum Requêtes
    Réponses: 4
    Dernier message: 29/08/2005, 11h01
  4. Changer plusieurs images d'un coup
    Par YanK dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 18/07/2005, 17h33
  5. [Info]pliage/depliage de plusieurs fonctions d'un coup
    Par pierre.zelb dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 22/06/2005, 14h17

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