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 :

Atteindre les élément d'une sous-liste de liste


Sujet :

R

  1. #1
    Membre actif
    Inscrit en
    novembre 2003
    Messages
    528
    Détails du profil
    Informations forums :
    Inscription : novembre 2003
    Messages : 528
    Points : 227
    Points
    227
    Par défaut Atteindre les élément d'une sous-liste de liste
    Bonjour,

    Je travaille avec des listes qui contiennent elles-mêmes des sous-listes de personnes dont on connait le sexe et l'âge.
    La forme générale est L = list( list(Id1, S1, A1), list(Id2, S2, A2), ...), où Idx est un identifiant unique, Sx est le sexe et Ax l'âge de la personne.

    Sachant la valeur d'un identifiant, je souhaite extraire des informations concernant cette personne.
    En parcourant les blogs, j'ai vu que je pouvais utiliser la syntaxe suivante : L[sapply(L,"[[",1) == x], où x est l'identifiant de la personne recherchée.
    Cette syntaxe me renvoie les informations suivantes (avec Id=7) :

    [[1]]
    [[1]]$Id
    [1] 7

    [[1]]$Sexe
    [1] "M"

    [[1]]$Age
    [1] 25

    Je souhaiterais maintenant obtenir uiquement l'âge (ici le nombre 25).
    Mais la syntaxe L[sapply(L,"[[",1) == x]$Age ne fonctionne pas.

    Quelqu'un aurait-il la solution ?

  2. #2
    Membre actif
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    juillet 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : juillet 2009
    Messages : 121
    Points : 298
    Points
    298
    Par défaut
    Ta syntaxe ne retourne pas une liste mais une liste de liste contenant un seul élément. Il faut donc indiquer que tu veux accéder à ce premier élément avec [[1]] avant d'utiliser le dollar,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L[sapply(L,"[[",1) == x][[1]]$Age
    Par contre, je pense que tu devrais plutôt mettre tes données sous la forme d'un data frame et utiliser des filtres (ou la syntaxe de dplyr) plutôt que ce code difficile à relire sur des listes de listes.

  3. #3
    Membre actif
    Inscrit en
    novembre 2003
    Messages
    528
    Détails du profil
    Informations forums :
    Inscription : novembre 2003
    Messages : 528
    Points : 227
    Points
    227
    Par défaut
    Bon sang, mais c'est bien sur !

    Merci

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

Discussions similaires

  1. [Python 3.X] séparer les éléments d'une liste en sous liste
    Par amfortaf dans le forum Général Python
    Réponses: 2
    Dernier message: 23/10/2020, 17h24
  2. Récupération élément d'une sous liste
    Par brandon10.martin dans le forum Général Python
    Réponses: 3
    Dernier message: 17/11/2016, 23h01
  3. Comparer et modifier les éléments d'une même liste
    Par Opsse dans le forum Général Java
    Réponses: 7
    Dernier message: 22/06/2015, 15h20
  4. Réponses: 13
    Dernier message: 28/07/2014, 04h58
  5. Prendre les éléments avant une sous chaine
    Par GreatDeveloperOnizuka dans le forum C#
    Réponses: 1
    Dernier message: 23/10/2009, 23h06

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