如何使用 fread() 读取具有不规则 space 分隔值的文件?

How to read file with irregular space separated value using fread()?

我正在学习使用 data.table。这是一些 sample text 我想读成 data.table:

Date           Col1       Col2
2014-01-01     123        12
2014-01-01     123        21
2014-01-01     124        32
2014-01-01     125        32
2014-01-02     123        34
2014-01-02     126        24
2014-01-02     127        23
2014-01-03     521        21
2014-01-03     123        13
2014-01-03     126        15

read.table 在这里工作正常:

df <- read.table("dat", header=T)

当我尝试使用 data.table 包中的 fread() 时,出现错误:

DT <- fread("dat",header=T)
Error in fread("dat", header = T) : 
  Not positioned correctly after testing format of header row. ch=' '

我也试过设置sep:

DT <- fread("dat",header=T, sep="\t")

但是,结构不对: 它只有 1 个变量 $Date(应该是 3)。

str(DT)
Classes 'data.table' and 'data.frame':  10 obs. of  1 variable:
 $ Date           Col1       Col2: chr  "2014-01-01     123        12" "2014-01-01     123        21" "2014-01-01     124       

这里如何使用fread()

中所述,现在由 fread 自动处理(有关更多信息,请参阅 README):

require(data.table) #v1.9.5+
fread("~/Downloads/tmp.txt")
#           Date Col1 Col2
#  1: 2014-01-01  123   12
#  2: 2014-01-01  123   21
#  3: 2014-01-01  124   32
#  4: 2014-01-01  125   32
#  5: 2014-01-02  123   34
#  6: 2014-01-02  126   24
#  7: 2014-01-02  127   23
#  8: 2014-01-03  521   21
#  9: 2014-01-03  123   13
# 10: 2014-01-03  126   15

要么更新到最新的开发版本,要么等到 v1.9.6 命中 CRAN。