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 :

Effectué un split tous les x pattern


Sujet :

R

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 604
    Points : 206
    Points
    206
    Par défaut Effectué un split tous les x pattern
    Bonjour,

    J'ai une chaîne de caractère comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elements <- "e1=1, e2=2, e3=3, e4=4, e5=5"
    Je voudrais découper cette chaîne de caractère tous les 4 virgules et avoir une liste comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [[1]]
    [1] "e1=1, e2=2, e3=3, e4=4"
     
    [[2]]
    [1] "e5=5"

  2. #2
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    543
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 543
    Points : 239
    Points
    239
    Par défaut
    Tu peux essayer quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Elements <- "e1=1, e2=2, e3=3, e4=4, e5=5" ; Elements
    ListElements <- strsplit(Elements, split=',') ; ListElements
    Element1 <- paste(ListElements[[1]][1:4],collapse=',') ; Element1
    Element2 <- ListElements[[1]][5] ; Element2
    Mais il y a aussi le package stringr qui permet de faire des choses encore plus facilement

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 528
    Points
    528
    Par défaut
    Bonsoir,

    Voici une autre solution possible sans package qui consiste à trouver l'index de la dernière virgule et ensuite d'extraire les 2 sous-chaînes de part et d'autre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    e <- "e1=1, e2=2, e3=3, e4=4, e5=5"
    n <- unlist(lapply(gregexpr(pattern = ',', e), max))
    e1 <- substring(e,0,n-1)
    e2 <- substring(e,n+2)

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 604
    Points : 206
    Points
    206
    Par défaut
    Bonjour,

    Merci de votre aide,

    J'avais essayé avec le package stringi::stri_split_fixed mais ca me donne cela


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    library(stringi)
    e <- "e1=1, e2=2, e3=3, e4=4, e5=5"
    stri_split_fixed(e,",", n = 4)
     
    [[1]]
    [1] "e1=1"        " e2=2"      
    [3] " e3=3"       " e4=4, e5=5"

Discussions similaires

  1. Pattern NVI : préconisé dans tous les cas ?
    Par Steph_ng8 dans le forum C++
    Réponses: 21
    Dernier message: 23/11/2011, 11h34
  2. [RegEx] Récupérer tous les patterns
    Par ZCode dans le forum Langage
    Réponses: 3
    Dernier message: 11/09/2011, 19h32
  3. [SQL Agent] Requête effectuée tous les jours à minuit
    Par pitipilot dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 22/07/2011, 14h04
  4. supprimer tous les fichiers contenant un pattern
    Par dams77 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 14/05/2010, 13h50
  5. une requete effectuant une recherche sur tous les champs
    Par raynor911 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/02/2006, 15h06

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