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

时间:2015-08-07 13:45:45

标签: r data.table

我正在学习使用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)

当我尝试使用fread()包中的data.table时,我收到了错误消息:

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()

1 个答案:

答案 0 :(得分:1)

正如this post所述,现在由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

更新到最新的devel版本或等到v1.9.6命中CRAN。