Après avoir converti les données JSON en une liste à l'aide dejsonlite, je me retrouve avec l'une des listes qui ressemble à la suivante Dans ce cas, le 10e élément contient une liste de 9 colonnes (toujours fixes) et 2 lignes (varie à chaque fois).
mat <- lset$data$comments$data[10]
mat
[[1]]
id can_remove created_time from.id
1 10152663742099258_10152663749369258 TRUE 2014-07-01T11:10:29+0000 10203711779968366
2 10152663742099258_10152663842204258 TRUE 2014-07-01T12:15:57+0000 706804257
3 10152663742099258_10152663929639258 TRUE 2014-07-01T13:25:28+0000 10152738599744416
4 10152663742099258_10152663976344258 TRUE 2014-07-01T13:59:33+0000 706804257
from.name like_count
1 Aileen Yeow 1
2 Tejas Damania 0
3 Sandeep Kulkarni 1
4 Tejas Damania 0
message
1 Lame statement
2 Don"t forget, people like you only because they don"t know you! <ed><U+00A0><U+00BD><ed><U+00B8><U+00A1>
3 ...for a second I thought it"s Accenture Singapore office with some new theme similar to its brand!
4 This is shanghai and nothing to do with firm I work for <ed><U+00A0><U+00BD><ed><U+00B8><U+008E>
user_likes
1 FALSE
2 FALSE
3 TRUE
4 FALSE
Le tapis entier nous montre une liste de [1] Comme vous pouvez le voir, il contient une liste (dans une liste?). Lorsque j'imprime un tapis, il montre une structure comme ci-dessus.
typeof(mat)
[1] "list"
substring(mat,1,100)
[1] "list(id = c("10152663742099258_10152663749369258", "10152663742099258_10152663842204258", "101526637"
Je ne peux pas accéder à des éléments spécifiques (par exemple un message) à partir de cela. Je ne suis pas non plus en mesure de convertir cela en une matrice de chaînes pour pouvoir accéder aux éléments de manière structurée.
Réponses:
0 pour la réponse № 1J'ai changé le paramètre d'appel fromJSON en définissant simplifyVector = FALSE
(qui est défini par défaut sur true)
lset <- fromJSON(jsonobj, simplifyVector = F, flatten=TRUE, unicode = TRUE)
cela change la façon dont le tapis est formé, le code maintient l'imbrication jusqu'à chaque élément feuille. Je peux continuer à aller plus loin en utilisant $ et trouver la valeur de la chaîne uniquement à l'élément leaf!
lset$data[[x]]$comments$data[[y]]$from$name
Cela fonctionne pour le moment! Merci pour votre aide