当分隔符是空格而缺少值是空白时如何读取?

时间:2018-01-11 20:19:17

标签: r data.table delimiter fread

我有一个以空格分隔的文件,而且有些列是空白的,因此我们最终会有多个空格, fread 会因错误而失败。但 read.table 工作正常。见例:

library(data.table)
# R version 3.4.2 (2017-09-28)
# data.table_1.10.4-3

fread("A B C D
1 2  3
4 5 6 7", sep = " ", header = TRUE)
Error in fread("A B C D\n1 2  3\n4 5 6 7") : 
  Expected sep (' ') but new line, EOF (or other non printing character) ends field 2 when detecting types from point 0: 1 2  3
read.table(text ="A B C D
1 2  3
4 5 6 7", sep = " ", header = TRUE)
#   A B  C D
# 1 1 2 NA 3
# 2 4 5  6 7

我们如何使用 fread 阅读,我尝试设置sep = " "na.string = "",没有帮助。

1 个答案:

答案 0 :(得分:3)

fread 函数中,默认情况下strip.white设置为TRUE,这意味着会删除前导空格。这对于使用fixed widthirregular number of spaces作为分隔符读取文件非常有用。

默认情况下, read.table strip.white设置为FALSE

fread("A B C D
1 2  3
4 5 6 7", sep = " ", header = TRUE, strip.white = FALSE)
#    A B  C D
# 1: 1 2 NA 3
# 2: 4 5  6 7

注意:由于找不到相关帖子而提供自我回答,这也让我感到惊讶oncetwice