r内存与性能
R 报错:do.call 与 rbind 循环拼接导致内存爆炸
在循环里用 rbind 逐行拼接数据框,每次都要复制整份数据,复杂度 O(n²)。
报错原文
Error: cannot allocate vector of size ...为什么会报这个错
在循环里用 rbind 逐行拼接数据框,每次都要复制整份数据,复杂度 O(n²)。
怎么解决
改用列表收集 + 一次性 do.call(rbind, list),或用 data.table::rbindlist()。
代码示例
res <- vector("list", n)
for (i in seq_len(n)) res[[i]] <- compute(i)
out <- do.call(rbind, res)
# 或
data.table::rbindlist(res, fill = TRUE)同工具的其他报错
报错解决了,但方法还没搞懂?
报错只是表象。因果推断、面板数据、稳健性检验这些方法背后的逻辑,知识库里按「原理 × 直觉 × 代码」讲清楚了。
进入知识库 →