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

Mar*_*tin 17 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
Run Code Online (Sandbox Code Playgroud)

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

> first.object=listJson[1]
> ff=first.object[[1]]$favorited
> ff
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

但我对如何为列表中的所有对象提取收藏非常困惑.我调查了一下,这是正确的做法吗?我需要将上面的代码放入for ... next循环吗?

Jef*_*len 34

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

sapply(listJson, "[[", 1)
Run Code Online (Sandbox Code Playgroud)

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

sapply(listJson, "[[", "favorited")
Run Code Online (Sandbox Code Playgroud)

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

  • 这很奇怪,但真的很有用 (2认同)