R中实体的内存分配仅为2 GB?

时间:2017-10-27 14:57:00

标签: r memory memory-management stringr nul

Windows 10 64位,32 GB RAM,Rstudio 1.1.383和R 3.4.2(最新)

我有几个csv文件,其中至少有1或2行充满了许多 nul 值。所以我编写了一个脚本,它使用R中 stringr 包中的 read_lines_raw(),它以原始格式读取文件。它生成一个列表,其中每个元素都是一行。然后我检查 00 (nul值)以及何时发现该行被删除。

其中一个文件大小为2.5 GB,并且在其中的某个位置也有nul值。问题是, read_lines_raw 无法读取此文件并引发错误:

r in read_lines_raw_(ds, n_max = n_max, progress = progress) : 
  negative length vectors are not allowed

我甚至不明白这个问题。我的一些研究暗示了有关尺寸的问题,但是甚至没有使用一半的RAM。它能够读取的其他一些文件大小为1.5 GB。这个文件太大了,还是导致这种情况的其他原因?

更新1:

我尝试使用扫描读取整个文件,但这也给了我一个错误:

could not allocate memory (2048 Mb) in C function 'R_AllocStringBuffer'

因此虽然我的电脑是32 GB,但实体允许的最大空间是2 GB?我检查确保它运行64位R,是的。

> version
               _                           
platform       x86_64-w64-mingw32          
arch           x86_64                      
os             mingw32                     
system         x86_64, mingw32             
status                                     
major          3                           
minor          4.2                         
year           2017                        
month          09                          
day            28                          
svn rev        73368                       
language       R                           
version.string R version 3.4.2 (2017-09-28)
nickname       Short Summer

似乎很多人都面临类似的问题,但我找不到任何解决方案。我们如何增加单个实体的内存分配? memory.limit()返回32 GB,这是RAM大小,但这没有帮助。 memory.size()确实提供了接近2 GB的内容,并且由于磁盘上的文件是2.7 GB,我认为这是获取错误的原因。

谢谢。

0 个答案:

没有答案