r - 附加到大型 data.frame 并达到内存限制

标签 r dataframe

我正在尝试将一个月的数据 (200k) 行附加到已经有 1600 万行的 data.frame,并且达到了系统上的 R 内存限制:

d = rbind(d, n)
Error: cannot allocate vector of size 60.8 Mb
In addition: Warning messages:
1: In rbind(deparse.level, ...) :
  Reached total allocation of 8072Mb: see help(memory.size)

memory.sizememory.max 分别报告 2187.88 和 8072,所以我认为我正在使用所有 8GB 系统内存。使用 JD Long in this question 详细介绍的对象内存报告功能,我得到以下报告:

            Type          Size     Rows Columns
d     data.table 2,231,877,576 15941535      26
files  character           912       13      NA
i        numeric            48        1      NA
n     data.frame    28,176,000   213116      26

是否有另一种方法可以附加到 data.frame,而不会导致似乎正在发生的明显对象重复并占用内存?我热衷于避免附加到 csv 文件,因为我正在使用 .RData 保存的对象来更快地读入数据。

最佳答案

如果您使用 data.table 对象,则应使用 rbindlist 以避免对 data.table 进行不必要的复制。这应该有效...

d = rbindlist(d, n)

关于r - 附加到大型 data.frame 并达到内存限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19300381/

相关文章:

r - 在 A 列中查找大于 0 的第一个值的位置,并在 B 列中的该位置返回值

r - 缩略语和功能,准备参加编程竞赛

r - 无法在 Linux 服务器上安装任何 R 包

python - 根据数据框中的唯一值生成大量列

r - 如何从 data.frame 中删除所有行?

RSQLite;是否可以从数据框中更新表格?

r - 将字符向量转换为不带引号的对象名称

apache-spark - 如何将稀疏向量的 Spark DataFrame 列转换为密集向量列?

python - 从Python中的df列中删除字符串

r - 使用循环和命名约定在数据框中创建新的命名变量