data.table fread如何忽略空行

Jim*_*een 7 r data.table

看起来如果文件中的第二行为空,则不会读取列名.我从文档中使用了诸如header,skip之类的开关但无法使其工作.

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

第二行是空的:

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

   V1 V2
1:  1  2
2:  3  4
Run Code Online (Sandbox Code Playgroud)

第二行不是空的:

> fread('c1 c2\n1 2\n3 4\n')
   c1 c2
1:  1  2
2:  3  4
Run Code Online (Sandbox Code Playgroud)

A5C*_*2T1 8

当前版本的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
Run Code Online (Sandbox Code Playgroud)


pal*_*czy 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
Run Code Online (Sandbox Code Playgroud)

  • @Jim Green 如果解决了您的问题,请考虑接受其中一个答案。 (2认同)