看起来如果文件中的第二行为空,则不会读取列名.我从文档中使用了诸如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)
当前版本的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)
解决方法:读取文件,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)
| 归档时间: |
|
| 查看次数: |
3210 次 |
| 最近记录: |