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 :

Récupérer un élément de taille variable dans des données de dimensions variables


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 219
    Par défaut Récupérer un élément de taille variable dans des données de dimensions variables
    Bonjour,

    Je cherche à récupérer des éléments de longueur variable dans une table à dimension variable.

    Voici une partie de mes données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TET2:NM_001127208:exon3:c.3138_3138delins-AC,TET2:NM_017628:exon3:c.3138_3138delins-AC,
    CTTNBP2:NM_033427:exon18:c.G4105A:p.A1369T,
    ANKRD50:NM_001167882:exon3:c.A3417G:p.P1139P,ANKRD50:NM_020337:exon4:c.A3954G:p.P1318P,
    Je souhaite récupérer les noms allant de la position 1 au caractère ":".
    D'habitude, j'ai un même nombre de "champs" donc j'écris mes données dans un fichier, je les lis avec sep=":" et je récupère le champ voulu. Ici, je ne peux pas lire ma table car alors je n'ai pas la même dimension pour toutes mes lignes....

    Je cherche donc un équivalent de substr(), où je commencerais à la position 1 et finirais au caractère ":". Est-ce qu'une telle fonction existe ?

    Merci d'avance,
    Jane

  2. #2
    Membre chevronné
    Homme Profil pro
    MCU
    Inscrit en
    Juillet 2010
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : MCU
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2010
    Messages : 185
    Par défaut
    Bonjour,

    Au choix et

    Par exemple (si test est un vecteur qui contient les données que vous avez fournies) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gsub( "(^[[:alnum:]]+):.+", "\\1", test)
    strsplit(test, ":")
    HTH

    Vincent

    Edit: Ajout d'un exemple

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 219
    Par défaut
    Merci beaucoup !
    Effectivement, avec
    gsub( "(^[[:alnum:]]+):.+", "\\1", mutations_exonics_VICJE[,3])
    je récupère bien :
    [1] "C7"
    de
    mutations_exonics_VICJE[1,3]
    [1] C7:NM_000587:exon10:c.G1166C:p.S389T,
    Mais je comprends mal les 2 premiers arguments
    "(^[[:alnum:]]+):.+", "\\1"
    qui sont censés être un pattern et un objet à remplacer ?

    ‘sub’ and ‘gsub’ perform replacement of the first and all matches respectively.
    gsub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE, fixed = FALSE, useBytes = FALSE)
    Est-ce que "\\1" signifie premier champ de
    mutations_exonics_VICJE[1,3]
    [1] C7:NM_000587:exon10:c.G1166C:p.S389T,
    ?

    Pour plus de simplicité, j'essaie d'utiliser strsplit().
    strsplit(as.character(mutations_exonics_VICJE[1,3]),":")
    [[1]]
    [1] "C7" "NM_000587" "exon10" "c.G1166C" "p.S389T,"
    A ce niveau, il me reste à récupérer le premier élément de cette liste, mais je n'y arrive pas. Le type est
    str(strsplit(as.character(mutations_exonics_VICJE[1,3]),":"))
    List of 1
    $ : chr [1:5] "C7" "NM_000587" "exon10" "c.G1166C" ...
    Est-ce possible de récupérer cette info seulement ?

  4. #4
    Membre chevronné
    Homme Profil pro
    MCU
    Inscrit en
    Juillet 2010
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : MCU
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2010
    Messages : 185
    Par défaut
    gsub et split utilisent des expressions rationnelles, d'où le
    car c'est un champ très vaste. Brièvement, le premier argument de gsub dit : cherche une chaîne de caractères qui commence par un ensembre de chiffres/lettres suivie d'un ":". Les parenthèses me permettent de délimiter une zone à extraire. Le "\\1" me permet d'extraire ce que j'ai défini entre parenthèses.

    Pour strsplit, le résultat est une liste. Pour extraire le premier élément de chaque élément de la liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sapply(strsplit(test, ":"), function(x) x[1])
    devrait faire l'affaire

    HTH

    Vincent

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 219
    Par défaut
    Ok. Merci beaucoup pour ces explications

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2012
    Messages : 11
    Par défaut
    Bonjour,

    je me permets de up ce post pour savoir quelle aurait été la démarche à suivre s'il fallait extraire la dernière partie du nom après le ":".

    Merci,

    Alban.

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

Discussions similaires

  1. Récupérer les résultats d'une requête dans des variables
    Par christophebolmontcha dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 23/05/2014, 10h14
  2. Réponses: 5
    Dernier message: 27/06/2012, 15h59
  3. Réponses: 1
    Dernier message: 12/06/2008, 20h07
  4. Réponses: 2
    Dernier message: 15/09/2006, 12h18
  5. Comment récupérer la valeur d'un dbGrid dans des fenêtres MDI ?
    Par sylvie cl dans le forum Composants VCL
    Réponses: 5
    Dernier message: 19/07/2005, 13h42

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