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

Greg Snow Greg.Snow at imail.org
Thu Jan 13 21:14:44 CET 2011


Another option to consider is instead of save/load to use save/attach.  You save the data, but then instead of loading it back into the global environment you use the attach function to attach it in a new environment (position 2 on the search list by default).  It will be attached with the same name as it had when you saved it, but it will not overwrite something by the same name in the global environment.  You can still use it as it is, or assign it to a new name in the global environment.  When you are through using it you can then detach it.

-- 
Gregory (Greg) L. Snow Ph.D.
Statistical Data Center
Intermountain Healthcare
greg.snow at imail.org
801.408.8111


> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Rainer M Krug
> Sent: Thursday, January 13, 2011 7:09 AM
> To: Duncan Murdoch
> Cc: R-help
> Subject: Re: [R] Unexpected behaviour of write.csv - read.csv
> 
> -----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.



More information about the R-help mailing list