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



我正在通过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

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

使用fread时,这些相邻的分隔符通常会被完全读入,因此上面的行返回以下条目:

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

何时应读作:

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

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

我尝试使用带有选项skipNul = TRUE的read.table,并且这个 完美工作。但是,似乎没有任何类似的选择 跳过 NUL 为恐惧。

这已在 2019 年 4 月 15 日的 dev 1.12.3 中修复(见新闻):

  1. fread() 现在跳过嵌入式 NUL (\0),#3400。感谢Marcus Davy用例子报道,感谢Roy Storey最初的PR。

最新更新