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)

同工具的其他报错

报错解决了,但方法还没搞懂?

报错只是表象。因果推断、面板数据、稳健性检验这些方法背后的逻辑,知识库里按「原理 × 直觉 × 代码」讲清楚了。

进入知识库 →