自从%>%在magrittr包中引入运算符(并且它在其中使用)以来dplyr,我已经开始在我自己的工作中使用它.
然而,一个简单的操作让我难过.具体而言,这是从列表中提取(或子集化)元素.
一个示例:在基RI将使用$,[或[[以提取从一个列表中的一个元素:
iris$Species
iris[["Species"]]
Run Code Online (Sandbox Code Playgroud)
我可以使用%>%管道实现相同的目标:
iris %>%
subset(select = "Species") %>%
head
Species
1 setosa
2 setosa
3 setosa
4 setosa
5 setosa
6 setosa
Run Code Online (Sandbox Code Playgroud)
要么
iris %>%
`[[`("Species") %>%
levels
[1] "setosa" "versicolor" "virginica"
Run Code Online (Sandbox Code Playgroud)
然而,这感觉就像一个混乱,笨重的解决方案.
是否有更优雅,规范的方法使用%>%管道从列表中提取元素?
注意:我不想要任何涉及的解决方案dplyr,原因很简单,我希望解决方案能够与任何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循环吗?