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 <gabembec...@gmail.com> wrote:
> 
> 
> 
> On Thu, Jul 1, 2021 at 1:46 PM Stephen Ellison <s.elli...@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

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to