在R中,从列表中提取对象的一部分

时间:2012-07-17 20:17:44

标签: r

我只是在学习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循环吗?

1 个答案:

答案 0 :(得分:33)

sapply将对列表中的每个元素应用一些函数。在您的情况下,您想要访问(嵌套)列表中的每个元素。 sapply当然有能力做到这一点。例如,如果要访问列表中每个元素的第一个子节点:

sapply(listJson, "[[", 1)

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

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

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