错误:向量内存耗尽(达到限制?)R 3.5.0 macOS

Gra*_*ost 20 memory macos r

我已经和包含基因表达数据的大量文件一起工作了一段时间,最近我遇到了在升级到R 3.5.0之后将数据加载到R中的问题.使用大约8GB的内存(我的Mac有16GB的RAM)后,如果我尝试读取另一个文件,我会收到以下错误:

Error: vector memory exhausted (limit reached?)
Run Code Online (Sandbox Code Playgroud)

我找到了上一篇文章(错误:向量内存耗尽(达到限制?))建议我尝试将环境变量R_MAX_VSIZE设置为更高的值,所以我尝试了以下内容:

Sys.setenv(R_MAX_VSIZE = 16e9)
Run Code Online (Sandbox Code Playgroud)

但是,我仍然有同样的错误.我没有正确设置环境变量吗?有什么我想念的吗?

会话信息:

R version 3.5.0 (2018-04-23)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS High Sierra 10.13.5

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib

locale:[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages: [1] data.table_1.11.4

loaded via a namespace (and not attached):
[1] compiler_3.5.0 tools_3.5.0   
Run Code Online (Sandbox Code Playgroud)

Gra*_*ost 13

对于使用Rstudio的用户,我发现该设置Sys.setenv('R_MAX_VSIZE'=32000000000)仅在命令行上有效,并且在使用Rstudio时设置该参数不会阻止此错误:

Error: vector memory exhausted (limit reached?)

阅读更多内容后,我发现了线程,线程可以澄清Rstudio的问题并确定解决方案,如下所示:

步骤1:打开终端,

第2步:

cd ~
touch .Renviron
open .Renviron
Run Code Online (Sandbox Code Playgroud)

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

R_MAX_VSIZE=100Gb 
Run Code Online (Sandbox Code Playgroud)

注意:此限制包括物理内存和虚拟内存。因此,在具有16Gb物理内存的计算机上设置_MAX_VSIZE = 16Gb可能不会防止此错误。您可能需要使用此参数,具体取决于计算机的规格


Mir*_*lin 10

对于那些可能不熟悉命令行的人,可以在此处找到解决方案:

简而言之,解决方案是使用usethis包。

usethis::edit_r_environ()将打开位于您的主目录中的 .Renviron。这个 .Renviron 会影响 Rstudio 的所有工作

usethis::edit_r_environ("project")将打开一个 .Renviron 本地到您的项目。对此文件所做的更改仅影响在该特定 Rstudio 项目中完成的工作。

打开后,R_MAX_VSIZE可以设置 var。

链接页面还链接到此博客,其中详细描述了 R 的启动过程。

  • 只是一个澄清说明。在上面的代码中,参数字面意思是“项目”。它不应该被替换为您的项目名称。 (3认同)

Con*_*ble 9

R 3.5对内存分配有新的系统限制.从发行说明:

现在可以使用环境变量R_MAX_VSIZE指定最大向量堆大小.在macOS上,除非由此环境变量指定,否则最大向量堆大小将设置为最大16GB和可用物理内存.这是为了避免在macOS过度提交内存时R进程被终止.

你可以覆盖它.你冒着过度分配和杀死这个过程的风险,但如果你用R 3.4.4或之前用过的任何东西击中硬墙,那可能就是这样.

在终端中执行以下命令以创建R_MAX_VSIZE值为32GB 的临时环境变量(更改为适合): export R_MAX_VSIZE=32000000000

或者,如果您不想打开终端并在每次要启动R会话时运行该终端,则可以将相同的行附加到您的bash配置文件中.打开终端并找到您的bash配置文件open .bash_profile,然后在文本编辑器中添加上面的行.

您仍然需要打开终端并从那里启动R. 您只需执行R即可在终端中运行R,或者您可以打开GUI open -n /Applications/R.app.

要在R会话中进行此更改,请使用Sys.setenv('R_MAX_VSIZE'=32000000000) 并检查值Sys.getenv('R_MAX_VSIZE')

  • 不能为我解决问题。悲伤的脸。 (2认同)
  • @GordonMcDonald `Sys.setenv('R_MAX_VSIZE'=32000000000)` 对我不起作用。[显然](/sf/ask/3642089601/#comment91156723_52029851),你不能设置R_MAX_VSIZE [R启动后](http://r. 789695.n4.nabble.com/R-3-5-0-vector-memory-exhausted-error-on-readBin-tp4750237p4750244.html)。使用@GraemeFrost 提供的答案对我有用。 (2认同)