Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

using colClasses in fread

I don't know how to choose specific columns using the colClasses option in fread. I tried to use NULL in several ways but nothing worked. Here's a minimal example. I just want columns 1 and 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’ 

The imported dataset should look like this:

   a  c 1: 1 10 2: 2 11 3: 3 12 4: 4 13 5: 5 14 
like image 748
beginneR Avatar asked Sep 09 '13 13:09

beginneR


1 Answers

UPDATE: This is now implemented in v1.8.11 on R-Forge as of commit 966. From NEWS :

fread's drop, select and NULL in colClasses are implemented. To drop or select columns by name or by number. See examples in ?fread.

The examples in ?fread are :

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 
like image 165
Matt Dowle Avatar answered Oct 05 '22 06:10

Matt Dowle