使用colClasses在fread中

36

我不知道如何使用fread中的colClasses选项选择特定列。我尝试了几种方法使用NULL,但都没有成功。这是一个最简单的示例,我只想要第1列和第3列。

dt <- data.table(a=1:5,b=6:10,c=10:14)
write.csv(dt,"dt.csv",row.names=F)

dt <- fread("dt.csv",colClasses=?)

packageVersion("data.table")
[1]1.8.10’

getRversion()
[1]3.0.1’

导入的数据集应该长这样:

   a  c
1: 1 10
2: 2 11
3: 3 12
4: 4 13
5: 5 14
1个回答

56

更新:此功能现在已在v1.8.11上实现,位于R-Forge的提交版本为966。从 NEWS :

freaddropselectcolClasses 中的 NULL 已经被实现。通过列名或列号选择或删除列。请参见?fread中的示例。

?fread中的示例为:

data = "A,B,C,D\n1,3,5,7\n2,4,6,8\n"

# colClasses    
fread(data, colClasses=c(B="character",C="character",D="character"))
fread(data, colClasses=list(character=c("B","C","D")))    # saves typing
fread(data, colClasses=list(character=2:4))     # same using column numbers

# drop
fread(data, colClasses=c("B"="NULL","C"="NULL"))   # as read.csv
fread(data, colClasses=list(NULL=c("B","C")))      # same
fread(data, drop=c("B","C"))      # same but less typing, easier to read
fread(data, drop=2:3)             # same using column numbers

# select
# (in read.csv you need to work out which to drop)
fread(data, select=c("A","D"))    # less typing, easier to read
fread(data, select=c(1,4))        # same using column numbers

没问题,谢谢你的提示。你计划在不久的将来实现它吗? - beginneR
希望本周末之前能完成。 - Matt Dowle
2
只是提醒一下——1.8.11在R-Forge上被列为构建失败——需要多长时间才能传播到CRAN? - nsheff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接