R语言如何将含多层嵌套列表行的表格转为多行列data.frame
R语言嵌套列表结构表转换方案
依赖包引入
需使用tidyverse系列工具完成转换,执行以下代码加载依赖:
library(tidyverse)
完整转换代码
# 原始数据构造(示例代码) 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 <- source %>% # 按行独立处理,避免跨行干扰 rowwise() %>% mutate( items = list( # 压平3层嵌套列表,直接获取所有item对象 flatten_depth(tablePart, 3) %>% # 遍历提取每个item的category、name字段,拼接为数据框 map_dfr(~ tibble(category = .x$category, name = .x$name)) ) ) %>% # 展开列表列,转为一行对应一个item的结构 unnest(items) %>% # 保留需要的列,调整顺序 select(order, category, name)
输出验证
执行后得到的result结构与需求完全一致:
print(result) # A tibble: 3 × 3 order category name <dbl> <chr> <chr> 1 1 item category item name 2 2 item category1 item name1 3 2 item category2 item name2
内容的提问来源于stack exchange,提问作者onyx
相关产品推荐
相关产品推荐

