17

我只是在学习 R 并且很难思考如何从列表中的对象中提取元素。我已经将一个 json 文件解析为 R 给我列表对象。但我不知道如何从那里提取列表中的各种 json 元素。这是解析 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

我可以弄清楚如何为列表中的一个对象提取收藏夹数据

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

但是我很困惑如何为列表中的所有对象提取收藏夹。我仔细研究了一下,这是正确的方法吗?我是否需要将上述代码放入 for...next 循环中?

4

1 回答 1

35

sapply将对列表中的每个元素应用一些功能。在您的情况下,您希望访问(嵌套)列表中的每个元素。sapply肯定有这个能力。例如,如果您想访问列表中每个元素的第一个子元素:

sapply(listJson, "[[", 1)

或者,如果您想访问名为“收藏”的项目,您可以使用:

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

请注意,[运算符将获取您正在使用的列表的子集。因此,当您访问 时myList[1],您仍然有一个列表,它的长度仅为 1。但是,如果您引用myList[[1]],您将获得列表中第一个空格的内容(可能是也可能不是另一个列表)。因此,您将[[在 sapply 中使用运算符,因为您想深入了解列表的内容。

于 2012-07-17T20:23:04.077 回答