R data.table错误,fread中选项fill=TRUE

R data.table错误,fread中选项fill=TRUE,r,data.table,R,Data.table,我使用的是R.3.3.1。在工作PC上的RStudio 0.99.903中 我有一个制表符分隔的文件,我正试图与fread一起读入。不幸的是,有些行以双制表符结尾,而其他行则没有 以下是我的前几行数据: [1] "1054434\t01-01-2015\t-1\tAMOUNT OWN MUSIC\t12\t\t" [2] "1054434\t01-01-2015\t-1\tDVDS\t2\t" [3] "105

我使用的是R.3.3.1。在工作PC上的RStudio 0.99.903中

我有一个制表符分隔的文件,我正试图与fread一起读入。不幸的是,有些行以双制表符结尾,而其他行则没有

以下是我的前几行数据:

[1] "1054434\t01-01-2015\t-1\tAMOUNT OWN MUSIC\t12\t\t"               
[2] "1054434\t01-01-2015\t-1\tDVDS\t2\t"                            
[3] "1054434\t01-01-2015\t-1\tINIT TV\t2\t\t"                         
[4] "1054434\t01-01-2015\t-1\tINIT2\t4\t\t"                           
[5] "1054434\t01-01-2015\t-1\tIntro_other_TV\t2\t\t"    
我想我可以使用fill=TRUE选项来解决这个问题,但我收到了以下错误消息:

test<-fread(filenames[1], header = FALSE, fill = TRUE) 
Error in fread(filenames[1], header = FALSE, fill = TRUE) : 
unused argument (fill = TRUE)
你可以用它来做这个

read.table(filenames[1],fill=TRUE)

1.9.6没有
fill
选项--尝试更新到当前的CRAN版本(1.9.8+),其中
fill=TRUE
工作正常:

fread("test.tsv", fill = TRUE)
#         V1         V2 V3               V4 V5 V6 V7
# 1: 1054434 01-01-2015 -1 AMOUNT OWN MUSIC 12 NA NA
# 2: 1054434 01-01-2015 -1             DVDS  2 NA NA
# 3: 1054434 01-01-2015 -1          INIT TV  2 NA NA
# 4: 1054434 01-01-2015 -1            INIT2  4 NA NA
# 5: 1054434 01-01-2015 -1   Intro_other_TV  2 NA NA
其中
test.tsv
是您的文件

除此之外,您可以使用命令行工具修剪尾部空白;我对
sed
不太熟悉,所以我使用问题作为参考:

fread("sed 's/[ \t]*$//' test.tsv")
#         V1         V2 V3               V4 V5
# 1: 1054434 01-01-2015 -1 AMOUNT OWN MUSIC 12
# 2: 1054434 01-01-2015 -1             DVDS  2
# 3: 1054434 01-01-2015 -1          INIT TV  2
# 4: 1054434 01-01-2015 -1            INIT2  4
# 5: 1054434 01-01-2015 -1   Intro_other_TV  2
最后一个选项是将双
\t
替换为一个,以防需要一列
NA

fread("sed 's/[ \t][ \t]$/\t/' ~/Desktop/test.tsv")
#         V1         V2 V3               V4 V5 V6
# 1: 1054434 01-01-2015 -1 AMOUNT OWN MUSIC 12 NA
# 2: 1054434 01-01-2015 -1             DVDS  2 NA
# 3: 1054434 01-01-2015 -1          INIT TV  2 NA
# 4: 1054434 01-01-2015 -1            INIT2  4 NA
# 5: 1054434 01-01-2015 -1   Intro_other_TV  2 NA

为什么在
fread
内部使用
fill
?我不认为fread有这个论点。谢谢Michael,sed是一个非常有趣的特性。不幸的是,我无法让它在我的电脑上工作。。。我最终设法从GitHub安装了data.table 1.9.7,但这涉及到恢复到R.3.2.2。以及安装Rtools32。当额外的列位于文件的开头时,fill=TRUE可以完美地工作,但当它们开始沿着文件的更远处以行显示时,就不能了…@chrisjacques上面的例子适用于您的例子;您必须找出当前示例和实际文件之间的差异,以便我进一步提供帮助
fread("sed 's/[ \t][ \t]$/\t/' ~/Desktop/test.tsv")
#         V1         V2 V3               V4 V5 V6
# 1: 1054434 01-01-2015 -1 AMOUNT OWN MUSIC 12 NA
# 2: 1054434 01-01-2015 -1             DVDS  2 NA
# 3: 1054434 01-01-2015 -1          INIT TV  2 NA
# 4: 1054434 01-01-2015 -1            INIT2  4 NA
# 5: 1054434 01-01-2015 -1   Intro_other_TV  2 NA