我只是在学习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循环吗?
答案 0 :(得分:33)
sapply
将对列表中的每个元素应用一些函数。在您的情况下,您想要访问(嵌套)列表中的每个元素。 sapply
当然有能力做到这一点。例如,如果要访问列表中每个元素的第一个子节点:
sapply(listJson, "[[", 1)
或者,如果您想访问名为“favited”的项目,可以使用:
sapply(listJson, "[[", "favorited")
请注意,[
运算符将使用您正在使用的列表的子集。因此,当您访问myList[1]
时,您仍然有一个列表,它只是长度为1.但是,如果您引用myList[[1]]
,您将获得第一个空格的内容在您的列表中(可能是也可能不是另一个列表)。因此,您将在sapply中使用[[
运算符,因为您想要了解列表的内容。