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 substitutions 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 substitutions en 1 coup
    Bonjour,

    Voici une liste de numéros de communes : Txt <- c('09814','12001','01120','01001','98025','99124','23178).
    Dans cette liste, les vrais numéros des communes 98025 et 99124 sont 2A025 et 2B124 (Communes de Corse)
    Pour leur restituer leurs vrais numéros, j'utilise la fonction gsub :
    gsub("^98(...)$","2A\\1",Txt) dans le 1er cas
    gsub("^99(...)$","2B\\1",Txt) dans le second.
    Dans ces deux instructions, le paramètre \1 désigne les trois caractères qui ont matché dans la reconnaissance du texte, et qui sont restitués ensuite, préfixés par 2A ou 2B.

    Je souhaiterais faire ces deux opérations en une seule fois, du genre : gsub("^9[8|9](...)$","2([A|B])\\1",Txt).
    Cette instruction ne me donne pas le résultat souhaité, parce que j'obtiens 2([A|B])025 et 2([A|B])124.
    En fait, je ne sais pas comment faire comprendre à la fonction gsub qu'il faut remplacer 98 par 2A et 99 par 2B.

    Certes, je cherche un peu du poil aux oeufs ; mais quelqu'un saurait-il si une solution existe ?

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Janvier 2012
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 325
    Par défaut
    Avec gsub tu ne peux remplacer que par des chaines de caractères ou par le contenu d'un groupe, il n'y a pas moyen de faire en sorte que si tel groupe est reconnu on remplace par tel chaine de caractère.

    Je pense que tu n'as pas d'autre choix que d'appeler gsub plusieurs fois. Tu peux éventuellement créer une fonction contenant une boucle appelant gsub pour que ce soit moins moche (mais avec seulement 2 remplacement, ce n'est pas forcément la peine).

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2003
    Messages
    554
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 554
    Par défaut
    Ok, tant pis.
    Je vais faire comme tu dis
    Merci

+ 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