r - 如何将带有列表列表的行的表转换为具有更多行和更多列的data.frame?
问题描述
如何将“源”转换为“结果”:
l1 <- list(list(list(item=list(category="item category",name="item name"))))
l2 <- list(
list(
list(
item=list(category="item category1",name="item name1"),
item=list(category="item category2",name="item name2")
)))
source <- tribble(
~order, ~tablePart,
1,l1,
2,l2
)
result <- tribble(
~order, ~category, ~name,
1,"item category","item name",
2,"item category1","item name1",
2,"item category2","item name2"
)
解决方案
由于您有一个嵌套列表列,我们可以使用flatten_dfc
then unnest
:
library(dplyr)
library(purrr)
library(tidyr)
source %>%
mutate(tablePart = map(tablePart, flatten_dfc)) %>%
unnest()
order category name category...1 name...2 category...3 name...4
<dbl> <chr> <chr> <chr> <chr> <chr> <chr>
1 1 item category item name NA NA NA NA
2 2 NA NA item category1 item name1 item category2 item name2
推荐阅读
- c++ - 比较两个字符串的每个字符。新的并正在寻找输入
- php - Modify user information
- spring - org.springframework.data.relational 404 JHiphipster
- java - In spark what is the difference between setting the conf spark.default.parallelism and calling the method rdd.coalesce()?
- javascript - How to get information in a nested div?
- java - Android studio, trying to inflate an xml file with a base xml and ArrayAdapter
- python - 将数据框转换为多索引数据框熊猫
- python - Seaborn:从元组列表创建堆叠直方图
- java - Java EE application deployment issue
- react-native - 如何将本机 rn-range-slider 重置为其初始状态