首页 > 解决方案 > 如何将此列表列表转换为R中的数据框?

问题描述

假设我们有这样的东西:

list of two months:

Jan
Feb

然后,当您展开一月和二月时,您会看到其他列表(国家/地区):

Jan -> USA, UK, etc.
Fab -> USA, UK, etc.

最后,每个国家都是一个列表,包含两个项目。例如在 Jan 列表中打开 USA:

USA -> gdp, population

我想要做的是实现这样的数据框(数字只是数据中的值):

month country gdp    population
Jan   USA     number no.
Jan   UK      number no.
Feb   USA     number no.
Feb   UK      number no.

我试过bind_rows(list)了,但效果不太好,因为标题变成了国家,而列中填充了不再有标签的数字。

有没有人有任何想法?

编辑:dput()输出:

list(`Jan` = list(UK = list(date_value = "Jan", 
    country_code = "UK", gdp = 308L, pop = 0L)

标签: rdata-binding

解决方案


这是一个选项

library(purrr)
library(dplyr)
map_dfr(lst2, bind_rows)
# A tibble: 2 x 4
#  date_value country_code   gdp   pop
#  <chr>      <chr>        <int> <int>
#1 Jan        UK             308     0
#2 Jan        UK             308     0

数据

lst2 <- list(Jan = list(UK = list(date_value = "Jan", country_code = "UK", 
    gdp = 308L, pop = 0L)), Feb = list(UK = list(date_value = "Jan", 
    country_code = "UK", gdp = 308L, pop = 0L)))

推荐阅读