R 当一个级别没有名称时,访问深度嵌套列表的多个级别

R 当一个级别没有名称时,访问深度嵌套列表的多个级别,r,purrr,R,Purrr,当一个元素嵌套在不同的级别并且没有名称时,我似乎不知道如何访问列表中的多个元素。在下面的示例中,我可以很容易地提取title元素: 库(purrr) obj1 #>$bar #>[1]“条形图:红色” 由(v0.2.1)于2019-02-07创建 不过,我的目标是让输出访问以下元素: x[["foo"]][["resource"]][[1]][["format"]] x[["foo"]][["resource"]][[2]][["format"]] x[["bar"]][["resource"

当一个元素嵌套在不同的级别并且没有名称时,我似乎不知道如何访问列表中的多个元素。在下面的示例中,我可以很容易地提取title元素:

库(purrr)
obj1
#>$bar
#>[1]“条形图:红色”
由(v0.2.1)于2019-02-07创建

不过,我的目标是让输出访问以下元素:

x[["foo"]][["resource"]][[1]][["format"]]
x[["foo"]][["resource"]][[2]][["format"]]
x[["bar"]][["resource"]][[1]][["format"]]
x[["bar"]][["resource"]][[2]][["format"]]
最终输出结果如下所示:

#> $foo
#> [1] "foo: blue (a,b)"
#> 
#> $bar
#> [1] "bar: red (y,z)"

似乎我应该能够在一个purrr语句中完成这一点,但我不能完全理解。

使用
purrr
,我们还可以使用
pull()
map
从列表中获取值。这似乎是你想要的回报

imap(x, ~paste0(
    .y, ": ", pluck(.x, "title"),
    " (", 
    paste0(map_chr(pluck(.x, "resource"), pluck, "format"), collapse=","), 
    ")"))
这是回报

$foo
[1] "foo: blue (a,b)"
$bar
[1] "bar: red (y,z)"