在 R 中使用 fread 时如何处理分隔符之间没有 space 的数据

How to handle data with no space between separators when using fread in R

我正在通过 fread 将一个大的 .txt 文件 (>1GB) 读入 R。我正在通过 bash 命令直接从 .zip 存档读取文件:

base = fread('unzip -p Folder.zip File.txt', sep = '|', header = FALSE, 
stringsAsFactors = FALSE, na.strings="", quote = "", col.names = col_namesMain)

文本文件通过 | 分隔条目,因此典型的行可能如下所示:

RRX|||02020||333293||||12123

但是,在许多地方,空条目由分隔符表示,它们之间没有 space,例如|| 在上面的示例行中。

当使用 fread 时,这些相邻的分隔符通常会一起读入,因此上面的行 returns 以下条目:

RRX, ||02020|, 333293|||, 12123

何时应读入:

RRX, NA, NA, 02020, NA, 333293, NA, NA, NA, 12123

我试过使用 read.tableskipNul = TRUE 选项,效果很好。但是,fread 似乎没有任何类似于 skipNul 的选项。如果可能的话,我更愿意使用 fread 而不是 read.table,因为我有几个非常大的文件。尽管我进行了搜索,但我还没有对这个问题进行太多讨论。非常感谢任何帮助。

I have tried using read.table with the option skipNul = TRUE, and this works perfectly. However, there doesn't seem to be any option similar to skipNul for fread.

这已于 2019 年 4 月 15 日在 dev 1.12.3 中修复(参见 NEWS):

  1. fread() now skips embedded NUL ([=11=]), #3400. Thanks to Marcus Davy for reporting with examples, and Roy Storey for the initial PR.