通过 R 中的 fread 以块的形式读取数据

EDC*_*EDC 5 datatable r fread

我试图在 R 中读取一个巨大的数据集(> 25GB)。它不适合我的 PC 内存。但我认为,如果数据采用压缩 (RData) 格式,也许可以处理数据。作为该过程的一部分,我还必须将列类更改为字符,因为某些列包含数字和字符串的混合。这怎么能做到fread呢?

第一部分总是很简单,我们可以使用例如以下代码来读取 10m 行:

part1 <- fread(filename,sep = " ", stringsAsFactors = FALSE, header = TRUE, 
      nrows = 10000000,showProgress = TRUE, 
      colClasses=c(AA="character",BB="character"))
Run Code Online (Sandbox Code Playgroud)

但是如果我尝试读取文件的第二部分,我总是会收到错误消息。我正在使用以下代码跳过前 1000000 行,这些行之前已经读入。我也设置headerFALSE

part2 <- fread(filename,sep = " ", stringsAsFactors = FALSE, header = FALSE, 
      nrows = 10000000,skip=10000000,showProgress = TRUE, 
      colClasses=c(AA="character",BB="character"))
Run Code Online (Sandbox Code Playgroud)

错误消息是:

Error in fread()  :  Column name 'AA' in colClasses[[1]] not found
Run Code Online (Sandbox Code Playgroud)

注意:如果我们设置了header = TRUE,错误信息仍然会出现。

我无法给出这种大小的示例数据集,但我想问题很简单,如果我们使用skip,列名就会丢失,然后当我们设置colClasses. 有什么方法可以使用 fread 还是必须使用其他软件包?