从多层嵌套列表提取DataFrame:Trademe API数据处理求助
提取嵌套列表中底层分类为DataFrame的解决方案
可以通过递归遍历的方式处理多层嵌套列表,精准筛选出Subcategories为空的底层分类,再整理成包含Name、Number、Path三列的DataFrame。以下是具体实现:
递归提取函数
编写递归函数,自动遍历所有层级,收集符合条件的底层分类数据:
extract_bottom_categories <- function(category_list) { result <- list() for (cat in category_list) { # 判定是否为最底层分类(子分类列表为空) if (length(cat$Subcategories) == 0) { result <- c(result, list(data.frame( Name = cat$Name, Number = cat$Number, Path = cat$Path, stringsAsFactors = FALSE ))) } else { # 递归处理下一层子分类 result <- c(result, extract_bottom_categories(cat$Subcategories)) } } # 合并所有结果为单个DataFrame do.call(rbind, result) }
使用方法
假设你已将Trademe API返回的数据解析为R列表对象(比如用jsonlite包处理),调用函数即可:
library(jsonlite) # 假设api_data是已解析完成的API数据列表 # api_data <- fromJSON("你的API数据来源") # 提取底层分类数据 bottom_categories_df <- extract_bottom_categories(api_data$Category$Subcategories) # 查看输出结果 head(bottom_categories_df)
关键说明
- 递归函数会自动适配任意深度的嵌套层级,无需手动调整层级逻辑;
- 仅当分类的
Subcategories为空时,才提取该分类的三个字段,确保只保留最底层数据; - 最终通过
do.call(rbind, ...)将分散的小数据框合并为一个完整的DataFrame。
内容的提问来源于stack exchange,提问作者versb
相关产品推荐
相关产品推荐

