data.table fread如何忽略空行

时间:2015-12-31 00:33:45

标签: r data.table

如果文件中的第二行为空,则不会读取列名。我已经在文档中使用了标题,跳过等开关,但无法使其正常工作。

如果我文件中的第二行是空的,如何忽略这个事实并仍然将第一行读作列名?

第二行是空的:

> fread('c1 c2\n\n1 2\n3 4\n')

   V1 V2
1:  1  2
2:  3  4

第二行不为空:

> fread('c1 c2\n1 2\n3 4\n')
   c1 c2
1:  1  2
2:  3  4

2 个答案:

答案 0 :(得分:7)

当前版本的data.table(1.9.8 +)添加了blank.lines.skip参数,似乎可以解决此问题:

fread('c1 c2\n\n1 2\n3 4\n',blank.lines.skip = TRUE)
#    c1 c2
# 1:  1  2
# 2:  3  4

答案 1 :(得分:2)

解决方法:使用fread读取文件,然后使用其他工具正确读取第一行,将其添加为列名。

library(data.table)
library(readr)

str_data <- 'c1 c2\n\n1 2\n3 4\n'
dt <- fread(str_data)

df.header <- read_delim(str_data, delim = " ", n_max = 0)
setnames(dt, names(df.header))

> dt
   c1 c2
1:  1  2
2:  3  4