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

如何高效将7600万级嵌套列表转为含向量列的data.table?

高效转换大规模嵌套列表为data.table的方法

你需要将7600万长度的嵌套列表(每个顶层元素为包含两个长度6向量的子列表)转换为两列的data.table,且保留向量类型。原逐个索引的循环方法效率极低,以下是更高效的实现方式:

方案1:使用purrr的transpose快速拆分

利用purrr::transpose直接翻转嵌套列表结构,一步拆分出两列对应的向量列表:

library(data.table)
library(purrr)

# 转置嵌套列表,得到分别对应两列的大列表
transposed_list <- transpose(list_of_list)
# 构造data.table
dt <- data.table(col1 = transposed_list[[1]], col2 = transposed_list[[2]])

方案2:Base R + data.table的高效提取

无需额外依赖,直接用base R的lapply对整个列表进行分量提取,内部为C级别的高效循环:

library(data.table)

dt <- data.table(
  col1 = lapply(list_of_list, `[[`, 1),
  col2 = lapply(list_of_list, `[[`, 2)
)

性能说明

这两种方法都避免了原代码中R级别的逐个元素遍历,而是利用内置的向量化/高效循环操作,能大幅缩短处理时间。对于7600万级别的数据,内存占用也更可控,因为直接对原列表的分量进行引用而非重复生成新对象。

内容的提问来源于stack exchange,提问作者Sudoh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:44:58