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,我认为这是获取错误的原因。
谢谢。