在fread中使用colClasses

beg*_*neR 28 r fread data.table

我不知道如何使用colClasses选项中选择特定的列fread.我试过用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’
Run Code Online (Sandbox Code Playgroud)

导入的数据集应如下所示:

   a  c
1: 1 10
2: 2 11
3: 3 12
4: 4 13
5: 5 14
Run Code Online (Sandbox Code Playgroud)

Mat*_*wle 47

更新:自提交966起,现在在R-Forge的 v1.8.11 中实现.来自新闻:

freaddrop,selectNULLcolClasses实施.按名称或编号删除或选择列.参见中的示例?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
Run Code Online (Sandbox Code Playgroud)

  • @beginneR现已实施.见编辑. (3认同)
  • 只是一个FYI - 1.8.11被列为R-Forge的构建失败 - 它会传播到CRAN多长时间? (2认同)