r - 如何使用 map 对列表进行子集化?

标签 r tidyverse purrr

我有以下列表:

list(list(list(name = 'John'), list(name=c("Jack", "Kate"))))
[[1]]
[[1]][[1]]
[[1]][[1]]$name
[1] "John"


[[1]][[2]]
[[1]][[2]]$name
[1] "Jack" "Kate"

我只想提取名称列表。我知道我可以使用

list(list(list(name = 'John'), list(name=c("Jack", "Kate"))))%>% map(list(1, 'name'))

从第一个元素中提取名称。但是我如何从每个元素中提取 name 来得到这个:

#[[1]]
#[1] "John"

#[[2]]
#[1] "Jack" "Kate"

更新:我刚刚意识到我可以使用flatten(),但是我该如何使用具有正确索引的 map 来做到这一点?

最佳答案

您可以在此处使用 modify_depthpluckflatten,所有函数均来自 purrr

your_list <- list(list(list(name = 'John'), list(name=c("Jack", "Kate"))))

library(purrr)
modify_depth(your_list, .depth = 2, .f = pluck, "name") %>% 
 flatten()
#[[1]]
#[1] "John"

#[[2]]
#[1] "Jack" "Kate"

关于r - 如何使用 map 对列表进行子集化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48361701/

相关文章:

r - 增加内存限制后,lme 使 Rstudio 崩溃并且电脑无响应

r - 强制 "dist"对角线为 1

r - 按部分字符串匹配分组

r - 仅使用 purrr 包中的函数从嵌套列表中提取元素

r - 从 R 中的 url 的 <head> 获取 &lt;title&gt;

r - 在 mutate() 中使用 Weighted.mean() 创建行加权平均值

r - 使用 tidyverse 将嵌套列表添加到数据框

r - 根据 tibble 中的数据发送电子邮件

r - purrr + dplyr NSE 问题在用户编写的函数中

r - 方便地移动列