r-根据使用purrr的字符列表中的条目,从命名数字列表中排除元素



我的数据有1000个条目,这里是前两个元素的str

> str(my_boots[1:2])
List of 2
$ :List of 4
..$ result  : Named num [1:10] 0.118 0.948 4.317 1.226 1.028 ...
.. ..- attr(*, "names")= chr [1:10] "(Intercept)" "pvi2" "freqchal" "sexexp" ...
..$ output  : chr "list()"
..$ warnings: chr(0) 
..$ messages: chr(0) 
$ :List of 4
..$ result  : Named num [1:10] 0.202 0.995 2.512 1.057 0.5 ...
.. ..- attr(*, "names")= chr [1:10] "(Intercept)" "pvi2" "freqchal" "sexexp" ...
..$ output  : chr "list()"
..$ warnings: chr(0) 
..$ messages: chr(0)

感兴趣的字段是$result$warnings;我想返回一个tibble,其中列基于命名列表result中的名称warning == ""(其中没有警告(。

我是purrr的新手,但我能够使用map_dfr(my_boots[1:2],"result")获得大部分方法-这将返回一个具有命名数字列表中列名的tibble,但我只想返回warnings下条目为空的列。

我不知道如何手动创建这个结构,但能够创建my_boots:的单个元素

test <- list(
list("warnings" = c("blah")), 
list("result" = c("alpha" = 1.1, "beta" = 2.1, "theta" =3.1, "blah" = 4.1))
)

另外:我正在使用tidyverse-谢谢。

从一些伪数据开始。

library(tidyverse)
l <- list(
list(
result = 1:10,
warnings = character(0)
),
list(
result = 2:20,
warnings = "warn"
),
list(
result = 3:30,
warnings = character(0)
),
list(
result = 4:40,
warnings = "warn"
)
)

使用keep只保留没有警告的元素。CCD_ 11将CCD_。

l %>%
keep(~is_empty(.$warnings)) %>%
map("result")
#> [[1]]
#>  [1]  1  2  3  4  5  6  7  8  9 10
#> 
#> [[2]]
#>  [1]  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#> [22] 24 25 26 27 28 29 30

最新更新