有什么方法可以强制fread()的data.table不要停在空行上?

Vas*_*y A 17 r data.table

(问题不再相关,因为data.table25-NOV-2016的新版本- 见下面接受的答案)

所以,我有一张桌子,中间有一些空行.当我试图打开它时fread,它会停下来说Stopped reading at empty line 10006, but text exists afterwards (discarded).有没有办法在不更改数据文件的情况下避免这种情况?

dnl*_*rky 9

2016年11月25日发布的data.table版本1.9.8有一个blank.lines.skip跳过空白行的新选项.

text <- "1,a\n\n2,b\n3,c\n4,a\n\n5,b\n\n6,c"

library(data.table)
fread(text)
##    V1 V2
## 1:  2  b
## 2:  3  c
## 3:  4  a
## Warning message:
## In fread("1,a\n\n2,b\n3,c\n4,a\n\n5,b\n\n6,c") :
##   Stopped reading at empty line 6 but text exists afterwards (discarded): 5,b

fread(text, blank.lines.skip=TRUE)
##    V1 V2
## 1:  1  a
## 2:  2  b
## 3:  3  c
## 4:  4  a
## 5:  5  b
## 6:  6  c
Run Code Online (Sandbox Code Playgroud)


Bra*_*ser 5

您可以使用Windows findstr命令摆脱空行.

示例文件"Data.txt".

1,a

2,b
3,c
4,a


5,b

6,c
Run Code Online (Sandbox Code Playgroud)

重现您的错误.

> dt <- fread("Data.txt")
Warning message:
In fread("Data.txt") :
Stopped reading at empty line 6 of file, but text exists afterwards (discarded): 5,b
Run Code Online (Sandbox Code Playgroud)

findstr直接使用Windows时可以正常工作fread.

> require(data.table)
> dt <- fread('findstr "." Data.txt')

# > dt
#    V1 V2
# 1:  1  a
# 2:  2  b
# 3:  3  c
# 4:  4  a
# 5:  5  b
# 6:  6  c
Run Code Online (Sandbox Code Playgroud)