From ggrothendieck at gmail.com  Mon Nov 21 16:31:10 2011
From: ggrothendieck at gmail.com (Gabor Grothendieck)
Date: Mon, 21 Nov 2011 10:31:10 -0500
Subject: [Rd] extending the colClasses argument in read.table
In-Reply-To: <4ECA2115.9080803@r-enthusiasts.com>
References: <4ECA2115.9080803@r-enthusiasts.com>
Message-ID: <CAP01uRkQA3zPqCPK03q28j4xbeWxNsbRdKRP1F7bA9j=Vhjdmg@mail.gmail.com>

2011/11/21 Romain Fran?ois <romain at r-enthusiasts.com>:
> Hello,
>
> We've released the int64 package to CRAN a few days ago. The package
> provides S4 classes "int64" and "uint64" that represent signed and unsigned
> 64 bit integer vectors.
>
> One further development of the package is to facilitate reading 64 bit
> integer data from csv, etc ... files.
>
> I have this function that wraps a call to read.csv to:
> - read the "int64" and "uint64" columns as "character"
> - converts them afterwards to the appropriate type
>

Try this:

> library(int64)
> Lines <- "A\n12\n"
>
> setAs("character", "int64", function(from) as.int64(from))
>
> DF <- read.csv(textConnection(Lines), colClasses = "int64")
>
> str(DF)
'data.frame':   1 obs. of  1 variable:
 $ A:Formal class 'int64' [package "int64"] with 2 slots
  .. ..@ .Data:List of 1
  .. .. ..$ : int  0 12
  .. ..@ NAMES: NULL

To convince ourselves that its translating from character to int64:

> setAs("character", "int64", function(from) {print(class(from)); as.int64(from)})
> DF <- read.csv(textConnection(Lines), colClasses = "int64")
[1] "character"


-- 
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com



[Rd] extending the colClasses argument in read.table
Gabor Grothendieck