-3

我在具有 16 GB RAM 的 Unix 操作系统上运行 R 进程。我正在运行一个 R 会话,其中我正在执行以下操作:

我将一个大小约为 350 MB 的 csv 文件导入到数据框中。然后我对上面创建的数据框运行一个操作,为每个唯一组选择前 n 个产品。

但是,当我检查这个 R 会话占用的内存量时,它显示大约 90%,然后会话自动被终止。我不太了解 R 在 unix 上的内存管理。因为,我的系统的操作系统有 16 GB RAM,而我的 R 会话最多可能占用 700 MB(导入的 CSV 为 350 MB,正在创建的新数据框为 350 MB),那么它怎么可能使用 90%系统的内存并被杀死。在 Unix 中分配给 R 进程的内存是否有一些默认限制?如果是,是否可以增加。任何人都可以请建议。我浏览了许多与此类似的帖子,但找不到任何解决方案。

4

1 回答 1

4

你没有说你有什么 Unix 风格,以及它是 32 位还是 64 位。这很重要。

作为第一个测试,尝试分配您认为应该拥有的内存量,例如

 m <- rep(NA, 0.8 * 16 * 1024 * 1024 * 1024 / 8)

或者

 m <- matrix(NA, 0.8 * 16 * 1024 * 1024 * 1024 / 8, 1)

对于 16 GB,每个元素为 8 个字节,我们要求总数的 80% 不会导致系统停机。

然后,一旦你知道你可以获得多少记忆,就按照丹尼尔的建议去做,并仔细考虑你的方法,以了解它们会占用多少。

于 2013-02-16T14:09:35.040 回答