使用R中read.table() 读取一个1.3G 的text格式数据,无法全部读入。具体测试结果如下:
1. 如果仅读入前2149659行(含),没有问题
dat <- read.table(filnam,sep="\t",nrows = 2149659,stringsAsFactors = FALSE)
但是如果多读入1行也不行,报错如下:
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
could not allocate memory (2048 Mb) in C function 'R_AllocStringBuffer'
2. 如果跳过前面的2165754行,也能读入,少于2165754行就不行
dat1 <- read.table(filnam,sep="\t",skip =21657520,stringsAsFactors = FALSE )
但是,如果跳过的少于2165754行就不行,报错如下:
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
could not allocate memory (2048 Mb) in C function 'R_AllocStringBuffer'
我想请教的是:
(1)使用的机器是64位的,机器总内存48G。运行R监测内存使用情况,发现报错时才使用的12G的内存。
这类问题如何解决?
(2)再有, 2149659行和2165754行之间相差16095行,不行想把这部分数据直接丢失掉,想知道损失的是什么。那么如何读取这部分数据?


雷达卡



京公网安备 11010802022788号







