仅使用purrr包中的函数从嵌套列表中提取元素
如何仅使用purrr包从嵌套列表中提取元素?在本例中,我希望在分割data.frame之后获得截获向量。我已经使用lappy()完成了我所需要的,但我只想使用purr包中的函数仅使用purrr包中的函数从嵌套列表中提取元素,r,purrr,R,Purrr,如何仅使用purrr包从嵌套列表中提取元素?在本例中,我希望在分割data.frame之后获得截获向量。我已经使用lappy()完成了我所需要的,但我只想使用purr包中的函数 library(purrr) mtcars %>% split(.$cyl) %>% map( ~lm(mpg ~ wt, data = .)) %>% # shorthand NOTE: ~ lm lapply(function(x) x[[1]] [1]) %>% #
library(purrr)
mtcars %>%
split(.$cyl) %>%
map( ~lm(mpg ~ wt, data = .)) %>% # shorthand NOTE: ~ lm
lapply(function(x) x[[1]] [1]) %>% # extract intercepts <==is there a purrr function for this line?
as_vector() # convert to vector
库(purrr)
mtcars%>%
拆分(.$cyl)%>%
地图(~lm(mpg~wt,data=))%>%#速记:~lm
lappy(函数(x)x[[1]][1])%>%#提取截取映射
函数有一些用于索引嵌套列表的速记编码。“帮助”页面中的一个有用的代码片段:
要深入索引到嵌套列表中,请使用多个值;c(“x”、“y”)
相当于z[[“x”][[“y”]]
因此,使用嵌套索引的代码以及map\u dbl
,可以简化为向量,您只需执行以下操作:
mtcars %>%
split(.$cyl) %>%
map(~lm(mpg ~ wt, data = .)) %>%
map_dbl(c(1, 1))
4 6 8
39.57120 28.40884 23.86803
我还发现引入purrr 0.1.0很有用,因为它提供了更多我最终使用的速记编码示例。使用了来自broom的tidy函数
库(purrr)
图书馆(dplyr)
#>
#>正在附加包:“dplyr”
#>以下对象已从“package:stats”屏蔽:
#>
#>滤波器,滞后
#>以下对象已从“package:base”屏蔽:
#>
#>相交、setdiff、setequal、并集
图书馆(tidyr)
图书馆(扫帚)
气缸组%group\u by(气缸)%>%
nest()
循环lm%变异(
mod=map(数据,~lm(mpg~wt,数据=.x))
)%%>%mutate(coef=map(mod,~tidy(.x)))%%>%unest(coef)
共青团
#>#tibble:6 x 8
#>#组别:共青团[3]
#>气缸数据模块术语估计标准误差统计p值
#>
#>1.6.2.6.3.4.4.5.8.6.8您是如何尝试map
?如果删除函数名lappy
并将其替换为map
-完全相同的参数-效果很好。我发现map
的帮助页面在这里很有用。与lappy
相比,您似乎可以进行一些简单的编码。类似于map\u dbl(c(1,1))
为嵌套列表编制索引。@Gregor。啊!这太明显了。谢谢你。这对我来说是最好的答案,因为它不会输出那些以名称作为属性的向量。干杯