从嵌套列表中提取名称相同的向量,列表名称在哪里变化?使用purrr?

杰里米·K。

我必须处理像这样的递归列表中的一些数据(下面是简化的可复制示例):

groups
#> $group1
#> $group1$countries
#> [1] "USA" "JPN"
#> 
#> 
#> $group2
#> $group2$countries
#> [1] "AUS" "GBR"

数据输入代码如下:

chars <- c("USA", "JPN")
chars2 <- c("AUS", "GBR")

group1 <- list(countries = chars)
group2 <- list(countries = chars2)

groups <- list(group1 = group1, group2 = group2)
groups

我正在尝试找出如何提取列表中的向量,而无需手动为每个组编写一行代码。下面的代码可以工作,但是我的示例中有很多组(并且组的数量会发生变化),因此,弄清楚如何以更有效的方式提取所有向量将是很棒的。这是行之有效的方式:

countries1 <- groups$group1$countries
countries2 <- groups$group2$countries

在该示例中,我尝试提取的最低级别向量始终称为countries,但它们包含在更改名称中的列表(仅通过编号而变化)。

是否有一个简单的purrr解决方案?还是tidyverse解决方案?还是其他解决方案?

马丁·摩根

在列表中添加其他案例

groups[["group3"]] <- list()
groups[["group4"]] <- list(foo = letters[1:2])
groups[["group5"]] <- list(foo = letters[1:2], countries = LETTERS[1:2])

这是一个将任何列表仅映射到名为“ countries”的元素的函数。NULL如果没有元素则返回

fun = function(x)
    x[["countries"]]

映射原始列表以仅包含您感兴趣的元素

interesting <- Map(fun, groups)

然后使用的组合变换这些成data.frameunlist()rep()

df <- data.frame(
    country = unlist(interesting, use.names = FALSE),
    name = rep(names(interesting), lengths(interesting))
)

或者,使用整洁的语法,例如

interesting %>% 
    tibble(group = names(.), value = .) %>% 
    unnest("value")

输出是

# A tibble: 6 x 2
  group  value
  <chr>  <chr>
1 group1 USA
2 group1 JPN
3 group2 AUS
4 group2 GBR
5 group5 A
6 group5 B

如果在解析的各个元素时还有其他问题groups,请修改fun,例如,

fun = function(x)
    as.character(x[["countries"]])

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用dplyr从列表中提取名称

来自分类Dev

使用map()函数从列表中提取名称

来自分类Dev

从(名称,处理程序)对列表中提取名称

来自分类Dev

为嵌套列表的每个叶提取名称层次结构

来自分类Dev

使用RVest从网页中提取名称列表和基础超链接

来自分类Dev

使用字符串提取名称与字符串相同的列表

来自分类Dev

使用字符串提取名称与字符串相同的列表

来自分类Dev

获取名称列表(如果相同)

来自分类Dev

获取名称列表(如果相同)

来自分类Dev

从文本中提取名称

来自分类Dev

从Wikipedia项目符号列表中提取名称只会返回每个字母的名字

来自分类Dev

使用purrr :: keep使用NA提取列表元素名称

来自分类Dev

使用 selenium 从标签中提取名称或 href 无需点击

来自分类Dev

使用深度名称的向量作为索引替换嵌套列表

来自分类Dev

从文件中提取列表并缩写名称

来自分类Dev

从网址中提取名称实体

来自分类Dev

从混乱的文件中提取名称

来自分类Dev

从网址中提取名称实体

来自分类Dev

从句子中提取名称

来自分类Dev

从工作簿名称列表中提取工作簿名称

来自分类Dev

如何使用purrr在R中的深层嵌套列表列中提取属性?

来自分类Dev

从嵌套列表中提取具有特定名称的所有元素

来自分类Dev

从数据框列表中提取并合并具有相同名称的列

来自分类Dev

正则表达式根据名称值对列表中的值模式提取名称

来自分类Dev

列表中向量的名称

来自分类Dev

使用列名称向量减少列表

来自分类Dev

使用file_b中2列的信息从file_a中提取名称

来自分类Dev

按用户从“ mmyyyy”数据中提取月份名称列表

来自分类Dev

如何在lapply的FUN中提取列表项的索引或名称?

Related 相关文章

热门标签

归档