我想到了一个奇怪的错误:我在Ubuntu 16.04机器上创建了一个CSV文件(~450Mb),其中R版本为3.2.3,内存为4Gb。每次我尝试在具有8Gb和更新版本的Ubuntu / R(Ubuntu 16.10,R版本3.3.1(64位)或Ubuntu 17.04,R版本3.3.2(64位))的机器上读取.sv()此文件,它失败了:
Error: memory exhausted (limit reached?)
或
Error: cannot allocate vector of size 1.3 Mb
(当我在运行R之前大幅增加ulimit -s时)。
文件在这里: https://mega.nz/#!ZMs0TSRJ!47DCZCnE6_FnICUp8MVS2R9eY_GdVIyGZ5O9TiejHfc
$ ls -ahl trainWhole.csv
-rw------- 1 gyu gyu 462M Mar 14 10:11 trainWhole.csv
$ R --version
R version 3.3.2 (2016-10-31) -- "Sincere Pumpkin Patch"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
...
$ R --no-save --no-restore-data --quiet
11:00:38 R > sessionInfo()
R version 3.3.2 (2016-10-31)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu Zesty Zapus (development branch)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices datasets utils methods base
11:19:01 R > df <- read.csv("./trainWhole.csv")
Error: memory exhausted (limit reached?)
我尝试修改系统的限制,没有运气:
$ ulimit -s 819200
$ R --no-save --no-restore-data --quiet
11:00:59 R > df <- read.csv("./trainWhole.csv")
Error: cannot allocate vector of size 1.3 Mb
我在SO上发现了一些类似的问题,但没有工作解决方案...... Error: cannot allocate vector of size X Mb in R R memory management / cannot allocate vector of size n Mb Error: memory exhausted (limit reached?) (R error) Error: cons memory exhausted (limit reached?)
我首先在R-devel上发布了这个问题,但他们在这里重定向了我......
我认为实际上没有内存限制问题,因为文件大约是500MB而且我有8GB的RAM,几乎没有任何东西分开FF和R:
$ free
total used free shared buff/cache available
Mem: 8043928 1385776 4808796 95288 1849356 6303680
Swap: 4194300 0 4194300
由于一切都在我的Ubuntu 16.04 / 4GB机器上顺畅运行,我会尝试将我的数据保存为RData文件,我几乎可以肯定它会起作用,但我很想得到一个解释/解决方案在更新版本的R / Ubuntu上加载CSV文件...
PS:我刚刚尝试过,CSV文件在第一代7“eeePC上加载2GB内存,运行Kali Linux ......答案 0 :(得分:0)
尝试删除设置中库的几行。因为某些库实际上是从较大的库中屏蔽的。加载它们会导致很多问题。不是实际的数据集。 (至少对我来说是这种情况)在删除了几行库设置之后,我就可以编织R降价了。希望有帮助。