我在csv文件中的每月数据块之间有空行。我查看了使用fread或read.csv的blank.line.skips = TRUE
参数删除那些空行。
但我得到的是一条最后有NA的线。 为什么行没有完全掉线?
我确实看到了一些关于fread崩溃的旧数据答案,当它有一个空行但似乎已经修复了。
测试案例
temp <- data.table(a = c("a","","c","d"),
b = c(10,"",30,40))
fwrite (temp, "test.csv")
mydata <- fread("test.csv",
blank.lines.skip = TRUE,
stringsAsFactors = FALSE)
结果
我得到第二行,其中包含添加NA的空白:
> mydata
a b
1: a 10
2: NA
3: c 30
4: d 40
我想(并且期望):
> mydata
a b
1: a 10
2: c 30
3: d 40
(我知道我可以使用mydata[complete.cases(mydata), ]
获得此信息,但我希望blank.lines.skips
能够执行此操作。来自fread帮助“如果输入中的TRUE空白行被忽略。”
此fread
是否会留下错误或功能?
答案 0 :(得分:2)
执行fwrite (temp, "test.csv")
时,第二行(不考虑标题)不为空白...它有一个分隔符:
a,b
a,10
,
c,30
d,40
论证blank.lines.skips
适用于真正的空白行:
Ex:使用test.csv如下
a,b
a,10
c,30
d,40
控制:
> dim(fread("test.csv", blank.lines.skip = TRUE))
[1] 3 2
参数blank.lines.skip = TRUE
避免在第一个空行处停止。如果不设置此参数,您将拥有:
> dim(fread("test.csv"))
[1] 1 2
Warning message:
In fread("test.csv") :
Stopped reading at empty line 3 but text exists afterwards (discarded): c,30
要解决你的空白问题,我建议: