Bar*_*Bar 0 r dplyr tidyr purrr
我有一个对象列表(在我的例子中,它们也是列表AFAII),由运行返回:
gof_stats <- models %>% map(gof_stats)
Run Code Online (Sandbox Code Playgroud)
哪里models是由创建的模型的列表fitdistrplus,并gof_stats是计算拟合统计的善良每个模型的功能.
现在,如果我想从该列表中提取特定的统计数据,我可以执行以下操作:
gof_stats[[1]]$cvm
Run Code Online (Sandbox Code Playgroud)
得到Cramer von Mises的统计数据.我可以在整个列表中实现相同的功能(根据链接的问题),如下所示:
cvms <- sapply(gof_stats, "[[", "cvm")
Run Code Online (Sandbox Code Playgroud)
有没有办法使用dplyr/ purrrsyntax 进行相同的操作?
奖励:您如何处理models列表中某些元素的情况NULL?
如果你喜欢map到sapply这一点,你可以做
library(purrr)
map(gof_stats, ~ .x[["cvm"]])
Run Code Online (Sandbox Code Playgroud)
如果你喜欢管道,你可以做
gof_stats %>% sapply("[[", "cvm")
Run Code Online (Sandbox Code Playgroud)
您的问题是关于列表,而不是数据框,因此dplyr不适用.您可能希望查看?magrittr::multiply_by包中的其他别名列表,这些别名定义%>%为您似乎喜欢管道.例如,magrittr::extract2它的别名[[可以很容易地在管道链的中间使用.
至于你的奖金,我会NULL在尝试提取内容之前预先过滤列表以删除元素.