Reputation: 1640
I'm just learning R and having a hard time wrapping my head around how to extract elements from objects in a list. I've parsed a json file into R giving me list object. But I can't figure out how, from there, to extract various json elements from the list. here's a truncated look at how my data appears after parsing the 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
I can figure out how to extract the favorites data for one of the objects in the list
> first.object=listJson[1]
> ff=first.object[[1]]$favorited
> ff
[1] FALSE
But I'm very confused about how to extract favorited for all objects in the list. I've looked into sappily, is that the correct approach? Do I need to put the above code into a for...next loop?
Upvotes: 17
Views: 26182
Reputation: 17527
sapply
is going to apply some function to every element in your list. In your case, you want to access each element in a (nested) list. sapply
is certainly capable of this. For instance, if you want to access the first child of every element in your list:
sapply(listJson, "[[", 1)
Or if you wanted to access the item named "favorited", you could use:
sapply(listJson, "[[", "favorited")
Note that the [
operator will take a subset of the list you're working with. So when you access myList[1]
, you still have a list, it's just of length 1. However, if you reference myList[[1]]
, you'll get the contents of the first space in your list (which may or may not be another list). Thus, you'll use the [[
operator in sapply, because you want to get down to the contents of the list.
Upvotes: 35