(问题已不再相关,因为25-NOV-2016 data.table
的新版本 - 见下面接受的答案)
所以,我有一张桌子,中间有一些空行。当我尝试使用fread
打开它时,它会停止,说Stopped reading at empty line 10006, but text exists afterwards (discarded)
。有没有办法在不更改数据文件的情况下避免这种情况?
答案 0 :(得分:8)
Version 1.9.8 of data.table有一个新的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
答案 1 :(得分:5)
您可以使用Windows findstr
命令删除空行。
示例文件“Data.txt”。
1,a
2,b
3,c
4,a
5,b
6,c
重现您的错误。
> 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
但直接在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
答案 2 :(得分:2)
如果其他人遇到类似的问题,我注意到data.table 1.10.4(我正在使用的当前2017版本)似乎会产生一些文件的空行错误,如果你没有明确说明:
'strip.white = FALSE'
我正在查看我尝试导入的~350个文件中明显的行错误。有些行被打破了原始的两行,由于它们包含不同形式的信息,因此fread警告某些列的类强制问题。但我同时在几乎所有文件中都会出现“空行”错误。我在notepad ++中手动检查了那些。多次。没有空行,还有剩余的行;其中很多。尝试通过导入参数并禁用特别是strip.white删除了空行警告。