R语言将不等长三层嵌套列表转为指定结构数据框并导出CSV
R三层嵌套列表转结构化DataFrame实现方案
核心实现逻辑
针对三层不规则嵌套列表,不需要提前规整每个子向量长度,按两步处理即可:
- 先把三层嵌套打平,提取所有最底层的字符向量为单层列表
- 对每个字符向量按规则拆分字段,合并为数据框后导出为Excel兼容的CSV文件
可直接运行的Base R代码(无需安装额外包)
# 打平嵌套列表,提取所有底层原子向量,自动适配不规则嵌套结构 all_subvec <- unlist(temp_lst3, recursive = FALSE) # 按规则生成三列数据 result <- data.frame( Name = sapply(all_subvec, function(x) x[1]), Title = sapply(all_subvec, function(x) x[2]), Others = sapply(all_subvec, function(x) paste(x[-c(1, 2)], collapse = ", ")), stringsAsFactors = FALSE ) # 导出为Excel可直接打开的CSV,指定BOM编码避免Windows下中文乱码 write.csv(result, "result.csv", row.names = FALSE, fileEncoding = "UTF-8-BOM")
可选:tidyverse简洁写法
如果已安装tidyverse生态包,可以用purrr简化迭代逻辑,容错性更好:
library(purrr) result <- map_dfr( unlist(temp_lst3, recursive = FALSE), ~data.frame( Name = .x[1], Title = .x[2], Others = paste(.x[-c(1,2)], collapse = ", "), stringsAsFactors = FALSE ) )
注意事项
- 代码自动适配非规整数据:无论每个子向量长度是多少,只要前两位是Name、Title字段,后续内容都会自动拼接,子向量长度不足时对应位置自动返回NA,不会中断运行
- 导出CSV时指定
fileEncoding = "UTF-8-BOM"是为了兼容Windows系统自带的Excel,避免双击打开出现乱码,Mac系统下可去掉该参数
内容的提问来源于stack exchange,提问作者Rerepython
相关产品推荐
相关产品推荐

