fread() blank.lines.skips 离开 NA 行
fread() blank.lines.skips leaves NA line
我在 csv 文件中的每月数据块之间有空行。我查看了使用 fread 的 blank.line.skips = TRUE
参数或 read.csv 来删除那些空行。
但我得到的是最后一行带有 NA 的行。 为什么行没有完全删除?
我确实在 SO 上看到了一些关于 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 帮助 "If TRUE blank lines in the input are ignored.")
这 fread
离开线路是错误还是功能?
当你执行fwrite (temp, "test.csv")
时,第二行(不考虑headers)不是空白...它有一个分隔符:
a,b
a,10
,
c,30
d,40
参数 blank.lines.skips
是真正的空白行:
例如: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
编辑:
为了解决你的空行问题,我建议:
- 如果您有很多这样的行,请在读取数据之前从您的文件中删除它们。
- 如果你只有其中的一些,请在阅读后删除它们。
我在 csv 文件中的每月数据块之间有空行。我查看了使用 fread 的 blank.line.skips = TRUE
参数或 read.csv 来删除那些空行。
但我得到的是最后一行带有 NA 的行。 为什么行没有完全删除?
我确实在 SO 上看到了一些关于 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 帮助 "If TRUE blank lines in the input are ignored.")
这 fread
离开线路是错误还是功能?
当你执行fwrite (temp, "test.csv")
时,第二行(不考虑headers)不是空白...它有一个分隔符:
a,b
a,10
,
c,30
d,40
参数 blank.lines.skips
是真正的空白行:
例如: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
编辑:
为了解决你的空行问题,我建议:
- 如果您有很多这样的行,请在读取数据之前从您的文件中删除它们。
- 如果你只有其中的一些,请在阅读后删除它们。