[R] Unexpected behaviour of write.csv - read.csv

William Dunlap wdunlap at tibco.com
Thu Jan 13 17:31:08 CET 2011


> -----Original Message-----
> From: r-help-bounces at r-project.org 
> [mailto:r-help-bounces at r-project.org] On Behalf Of Ivan Calandra
> Sent: Thursday, January 13, 2011 6:44 AM
> To: r-help at r-project.org
> Subject: Re: [R] Unexpected behaviour of write.csv - read.csv
> 
> Hi,
> 
> I thought this was already clear from the replies to your 
> previous post:
> - save/load
> - saveObject/loadObject from R.utils
> - dput/dget (I don't remember who proposed it sorry)

Add serialize()/unserialize() from base.

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com 

> 
> There might be more possibilities, but that should do what you're 
> looking for. And you should already know how each of them work and 
> therefore the pros and cons.
> 
> HTH,
> Ivan
> 
> Le 1/13/2011 15:08, Rainer M Krug a écrit :
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> >
> > On 01/13/2011 02:56 PM, Duncan Murdoch wrote:
> >> On 11-01-13 6:26 AM, Rainer M Krug wrote:
> >> Hi
> >>
> >> Assuming the following:
> >>
> >>>>> x<- data.frame(a=1:10, b=runif(10))
> >>>>> str(x)
> >> 'data.frame':    10 obs. of  2 variables:
> >>    $ a: int  1 2 3 4 5 6 7 8 9 10
> >>    $ b: num  0.692 0.325 0.634 0.16 0.873 ...
> >>>>> write.csv(x, "x.csv")
> >>>>> x2<- read.csv("x.csv")
> >>>>> str(x2)
> >> 'data.frame':    10 obs. of  3 variables:
> >>    $ X: int  1 2 3 4 5 6 7 8 9 10
> >>    $ a: int  1 2 3 4 5 6 7 8 9 10
> >>    $ b: num  0.692 0.325 0.634 0.16 0.873 ...
> >> Using the two functions write.csv and read.csv, I would 
> assume, that the
> >> resulting data.frame x2 be identical with x, but it has an 
> additional
> >> column X, which contains the row names of x.
> >>
> >> I know read.table and write.table which work as expected, 
> but I would
> >> like to use a csv for data exchange reasons.
> >>
> >> I know that I can use
> >> write.csv(x, "x.csv", row.names=FALSE)
> >>
> >> and it would work, but shouldn't that be the default behaviour?
> >>
> >>> I don't think so.  The CSV format is an export format 
> which holds less
> >>> information than a dataframe.  By exporting the dataframe 
> to CSV and
> >>> importing the result, you are discarding information and 
> you should
> >>> expect to get something different.
> > OK - I can follow this logic - and I think I can accept it.
> >
> >>> If you want to save a dataframe to disk and read it back 
> unchanged, you
> >>> should use save() and load().
> > And now my question from a previous thread (write.table 
> equivalent for
> > lists?) comes up again:
> >
> > using save() and load() definitely works, but it is highly 
> unsave - as
> > it even keeps the names of the object, more then one can be 
> saved, I can
> > not easily assign the saved object to a new name, I have 
> problems using
> > the saved object if I have forgotten what the variable name was.
> >
> > So I would like to expand my previous question: what are the proper
> > functions to store R objects? One could argue that all write...
> > functions are export functions - therefore keeping the data, but not
> > necessarily column names, rownames, attributes, ...
> >
> > So what can I really do to save an R object for later usage in R?
> >
> > Rainer
> >
> >>> Duncan Murdoch
> >>
> >> And if this is not compliant with csv files, shouldn't the function
> >> read.csv convert the first column into the row names?
> >>
> >> Cheers,
> >>
> >> Rainer
> >>
> > ______________________________________________
> > R-help at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide
> > http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
> >
> > - -- 
> > Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation
> > Biology, UCT), Dipl. Phys. (Germany)
> >
> > Centre of Excellence for Invasion Biology
> > Natural Sciences Building
> > Office Suite 2039
> > Stellenbosch University
> > Main Campus, Merriman Avenue
> > Stellenbosch
> > South Africa
> >
> > Tel:        +33 - (0)9 53 10 27 44
> > Cell:       +27 - (0)8 39 47 90 42
> > Fax (SA):   +27 - (0)8 65 16 27 82
> > Fax (D) :   +49 - (0)3 21 21 25 22 44
> > Fax (FR):   +33 - (0)9 58 10 27 44
> > email:      Rainer at krugs.de
> >
> > Skype:      RMkrug
> > -----BEGIN PGP SIGNATURE-----
> > Version: GnuPG v1.4.10 (GNU/Linux)
> > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
> >
> > iEYEARECAAYFAk0vB2oACgkQoYgNqgF2egqenQCeJJNdIiX2faKBPGeilzOz73wM
> > RmoAn05oGZvo41wCp1+hWwTqTmNoQrNo
> > =xfWD
> > -----END PGP SIGNATURE-----
> >
> > ______________________________________________
> > R-help at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide 
> http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
> >
> 
> -- 
> Ivan CALANDRA
> PhD Student
> University of Hamburg
> Biozentrum Grindel und Zoologisches Museum
> Abt. Säugetiere
> Martin-Luther-King-Platz 3
> D-20146 Hamburg, GERMANY
> +49(0)40 42838 6231
> ivan.calandra at uni-hamburg.de
> 
> **********
> http://www.for771.uni-bonn.de
> http://webapp5.rrz.uni-hamburg.de/mammals/eng/1525_8_1.php
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide 
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
> 



More information about the R-help mailing list