17 votes

en R, extraire une partie de l'objet de la liste

Je viens d'apprendre R et j'ai du mal à comprendre comment extraire des éléments d'objets dans une liste. J'ai analysé un fichier json dans R, ce qui m'a donné un objet liste. Mais je n'arrive pas à comprendre comment, à partir de là, extraire divers éléments json de la liste. Voici un aperçu tronqué de la façon dont mes données apparaissent après avoir analysé le json :

 > #Parse data into R objects#
 > list.Json= fromJSON(,final.name, method = "C")
 > head(listJson,6)
[[1]]
[[1]]$contributors
NULL

[[1]]$favorited
[1] FALSE

...[truncating]...
[[5]]
[[5]]$contributors
NULL

[[5]]$favorited
[1] FALSE

J'arrive à trouver comment extraire les données de favoris pour l'un des objets de la liste.

> first.object=listJson[1]
> ff=first.object[[1]]$favorited
> ff
[1] FALSE

Mais je suis très confus sur la façon d'extraire les favoris pour tous les objets de la liste. J'ai regardé dans Sappily, est-ce la bonne approche ? Dois-je mettre le code ci-dessus dans une boucle for...next ?

35voto

Jeff Allen Points 4660

sapply va appliquer une fonction à chaque élément de votre liste. Dans votre cas, vous voulez accéder à chaque élément d'une liste (imbriquée). sapply est certainement capable de cela. Par exemple, si vous voulez accéder au premier enfant de chaque élément de votre liste :

sapply(listJson, "[[", 1)

Ou si vous voulez accéder à l'élément nommé "favori", vous pouvez utiliser :

sapply(listJson, "[[", "favorited")

Notez que le [ prendra un sous-ensemble de la liste avec laquelle vous travaillez. Ainsi, lorsque vous accédez à myList[1] vous avez toujours une liste, mais de longueur 1. Cependant, si vous faites référence à myList[[1]] vous obtiendrez le contenu du premier espace de votre liste (qui peut être ou non une autre liste). Ainsi, vous utiliserez la fonction [[ dans sapply, parce que vous voulez aller jusqu'au contenu de la liste.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X