From mxkuhn at gmail.com  Sat Apr 21 16:28:25 2012
From: mxkuhn at gmail.com (Max Kuhn)
Date: Sat, 21 Apr 2012 10:28:25 -0400
Subject: [Rd] csv version of data in an R object
Message-ID: <CAJ9CoW=rvNmPoAkb5d1qUdLL+RJMgUt2kAh82WWKs9W1mEH+xw@mail.gmail.com>

For a package, I need to write a csv version of a data set to an R
object. Right now, I use:

    out <- capture.output(
                          write.table(x,
                                      sep = ",",
                                      na = "?",
                                      file = "",
                                      quote = FALSE,
                                      row.names = FALSE,
                                      col.names = FALSE))

To me, this is fairly slow; 131 seconds for a data frame with 8100
rows and 1400 columns.

The data will be in a data frame; I know write.table() would be faster
with a matrix. I was looking into converting the data frame to a
character matrix using as.matrix() or, better yet, format() prior to
the call above. However, I'm not sure what an appropriate value of
'digits' should be so that the character version of numeric data has
acceptable fidelity.

I also tried using a text connection and sink() as shown in
?textConnection but there was no speedup.

Any suggestions or ideas?

Thanks,

Max


> sessionInfo()
R version 2.14.0 (2011-10-31)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

loaded via a namespace (and not attached):
[1] tools_2.14.0



[Rd] csv version of data in an R object
Max Kuhn