From @|mon@urb@nek @end|ng |rom R-project@org  Fri Jul  2 01:00:33 2021
From: @|mon@urb@nek @end|ng |rom R-project@org (Simon Urbanek)
Date: Fri, 2 Jul 2021 11:00:33 +1200
Subject: [Rd] On read.csv and write.csv
In-Reply-To: <CAD4oTHFjYycJzEtLMM3jJ8ZbZjUCY6-Vh_-zUvHin3L15iXS1g@mail.gmail.com>
References: <CWXP265MB3208A3DC3EE8F8E8489E258B81019@CWXP265MB3208.GBRP265.PROD.OUTLOOK.COM>
 <029F6720-64AB-4F19-A823-8DB0768E153F@R-project.org>
 <CWXP265MB32085A57128A1822E4A5C5BB81009@CWXP265MB3208.GBRP265.PROD.OUTLOOK.COM>
 <CAD4oTHFjYycJzEtLMM3jJ8ZbZjUCY6-Vh_-zUvHin3L15iXS1g@mail.gmail.com>
Message-ID: <784D9F39-4215-4FC2-BCE4-FBEF52DCDB59@R-project.org>


Just for completeness, all this is well documented:

CSV files:

     By default there is no column name for a column of row names.  If
     ?col.names = NA? and ?row.names = TRUE? a blank column name is
     added, which is the convention used for CSV files to be read by
     spreadsheets.  Note that such CSV files can be read in R by

       read.csv(file = "<filename>", row.names = 1)

Cheers,
Simon



> On 2/07/2021, at 10:29 AM, Gabriel Becker <gabembecker at gmail.com> wrote:
> 
> 
> 
> On Thu, Jul 1, 2021 at 1:46 PM Stephen Ellison <S.Ellison at lgcgroup.com> wrote:
> 
> Please run the reproducible example provided. 
> When you do, you will see that write.csv writes an unnecessary empty header field ("") over the row names column. This makes the number of header fields equal to the number of columns _including_ row names. That causes the original row names to be read as data by read.csv, following the rule that the number of header fields determines whether row names are present. read.csv  accordingly assumes that the former row names are unnamed data, calls the unnamed row names column "X" (or X.1 etc if X exists) and then adds new, default, row names _instead of the original row names written by write.csv_. 
> That's not helpful.
> 
> This depends on if you are reading the csv via R or something else, I would imagine. It not being "valid" CSV at all would likely cause some programs to choke entirely, I expect. I admit that's conjecture though, I don't have data on that one way or another.
> 
> ~G



[Rd] On read.csv and write.csv
Simon Urbanek