【发布时间】:2017-08-31 04:04:07
【问题描述】:
我正在通过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 选项,效果很好。但是,对于fread,似乎没有任何类似于skipNul 的选项。如果可能的话,我更喜欢使用fread 而不是read.table,因为我有几个非常大的文件。尽管我进行了搜索,但我并没有遇到太多关于这个问题的讨论。非常感谢任何帮助。
【问题讨论】:
-
我无法复制此问题。
fread("RRX|||02020||333293||||12123\n", sep="|")结果给了我RRX NA NA 2020 NA 333293 NA NA NA 12123。 -
@Frank 啊,是的,我就是这个意思,谢谢。
-
@thelatemail 我还发现使用命令
fread("RRX|||02020||333293||||12123\n", sep="|")可以正确读取该行。但是,在unzipbash 命令上使用fread时,我仍然遇到问题。也许问题出在我从 zip 存档中读取文本文件的方式上? -
您希望
||被读为两个 NA?,这里是分隔符吗? -
尝试使用压缩文件,对我来说可以正常工作。可能在您的压缩文件中缺少“\n”?尝试从磁盘解压并读取解压后的文件。
标签: r data.table fread read.table