You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中键为唯一值的三级嵌套列表快速转换为data.frame的方法

R三层嵌套列表转指定结构tibble高效方案

使用tidyverse生态的purrr包可实现无循环的高效转换,处理大体积嵌套列表时性能远优于R级循环实现:

依赖包加载

# 若未安装先运行 install.packages("tidyverse")
library(tidyverse)

转换代码

# 请将下方your_list替换为你自己的嵌套列表变量名
# 注意不要使用list作为变量名,list是R内置基础函数,覆盖会引发异常
result <- your_list %>%
  # 遍历最外层分组,提取名称为source列
  map_dfr(~ .x %>%
            # 遍历第二层日期分组,提取名称为d列
            map_dfr(~ .x %>%
                      # 遍历第三层url分组,提取名称为et列
                      # 将数值向量命名为目标列名后转为行格式tibble
                      map_dfr(~ set_names(.x, c("e", "v", "f")) %>% as_tibble_row(),
                              .id = "et"),
                    .id = "d"),
          .id = "source") %>%
  # 调整列顺序匹配你的预期输出
  select(d, et, e, v, f, source)

代码说明

  • map_dfr会自动将遍历返回的结果按行合并为tibble,.id参数可以将对应层级的列表键名提取为指定列
  • 整个过程为矢量化运算,底层由C实现,即使嵌套列表包含数十万条数据也可以快速完成转换
  • 如果你的数值向量长度不固定,可以把as_tibble_row替换为as_tibble,再配合unnest处理即可

内容的提问来源于stack exchange,提问作者Андрей Буланкин

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:27:03