R on MacOS Error: vector memory exhausted (limit reached?)

R on MacOS Error: vector memory exhausted (limit reached?)

我正在尝试 运行 R 脚本(特别是,我正在使用 Bioconductor 包中的“getLineages”函数,Slingshot

我想知道为什么当我使用这个函数时会出现错误“向量内存耗尽(达到限制?)”,因为与其他函数相比,它似乎不是最占用内存的函数在此包中(包含我正在分析的数据)。

我知道 Whosebug 上还有其他类似的问题,但他们都建议切换到 64 位版本的 R。但是,我已经在使用这个版本。目前这个问题好像没有其他答案,不知道有没有人知道?

数据大小只有 ~120mb,远远小于我电脑的 8GB RAM。

对于那些使用 Rstudio 的人,我发现设置 Sys.setenv('R_MAX_VSIZE'=32000000000),正如多个 Whosebug 帖子所建议的那样,只能在命令行上工作,并且在使用 Rstudio 时设置该参数并不能阻止这种情况错误:

Error: vector memory exhausted (limit reached?)

经过更多阅读,我找到了 this 线程,它阐明了 Rstudio 的问题,并确定了解决方案,如下所示:

第 1 步:打开终端,

第 2 步:

cd ~
touch .Renviron
open .Renviron

第 3 步:将以下内容保存为 .Renviron 的第一行:

R_MAX_VSIZE=100Gb 

注意:此限制包括物理内存和虚拟内存;因此在物理内存为 16Gb 的机器上设置 _MAX_VSIZE=16Gb 可能无法避免此错误。您可能需要使用此参数,具体取决于您机器的规格

我有同样的问题,增加 "R_MAX_VSIZE" 对我的情况没有帮助,而是清理不再需要的变量解决了问题。希望这能帮助那些在这里挣扎的人。

rm(large_df, large_list, large_vector, temp_variables)

这也可以通过 R studio 完成。

library(usethis) 
usethis::edit_r_environ()

when the tab opens up in R studio, add this to the 1st line: R_MAX_VSIZE=100Gb (or whatever memory you wish to allocate).

重新启动 R and/or 重新启动计算机并再次 运行 给您带来内存错误的 R 命令。