Dear R users, I have recently begun to reuse some functions I made several months ago. The scripts write to a .csv file using the 'write.csv' function with the append option set to TRUE. This used to work fine, albeit with the warning "appending column names to file". I upgraded to R version 2.11.0 on OSX 10.5.8 and 'write.csv' will no longer append any files - I get the warning "attempt to set 'append' ignored". The exact same object will append when using 'write.table' without issue. Here's a minimal example. Has there been a change in 'write.csv'? # -------------------------------- x <- rnorm(10, 5) y <- rnorm(10, 10) z <- rnorm(10, 15) dat <- data.frame(x, y, z) names(dat) <- c("first", "second", "third") write.csv(dat, file="dat.csv", append=TRUE) write.table(dat, file="dat2.csv", sep=",", row.names=FALSE, append=TRUE) # -------------------------------- best, Steve -- View this message in context: http://r.789695.n4.nabble.com/New-behavior-of-write-csv-append-argument-tp2237936p2237936.html Sent from the R help mailing list archive at Nabble.com.
As noted in the help file under CSV files: These wrappers are deliberately inflexible: they are designed to ensure that the correct conventions are used to write a valid file. Attempts to change append, col.names, sep, dec or qmethod are ignored, with a warning. On Mon, May 31, 2010 at 8:33 PM, Steven Worthington <steven.worthington at gmail.com> wrote:> > Dear R users, > > I have recently begun to reuse some functions I made several months ago. The > scripts write to a .csv file using the 'write.csv' function with the append > option set to TRUE. This used to work fine, albeit with the warning > "appending column names to file". I upgraded to R version 2.11.0 on OSX > 10.5.8 and 'write.csv' will no longer append any files - I get the warning > "attempt to set 'append' ignored". The exact same object will append when > using 'write.table' without issue. Here's a minimal example. Has there been > a change in 'write.csv'? > > # -------------------------------- > x <- rnorm(10, 5) > y <- rnorm(10, 10) > z <- rnorm(10, 15) > dat <- data.frame(x, y, z) > names(dat) <- c("first", "second", "third") > > write.csv(dat, file="dat.csv", append=TRUE) > write.table(dat, file="dat2.csv", sep=",", row.names=FALSE, append=TRUE) > # -------------------------------- > > best, > > Steve > -- > View this message in context: http://r.789695.n4.nabble.com/New-behavior-of-write-csv-append-argument-tp2237936p2237936.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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. >-- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve?
On 2010-05-31 18:33, Steven Worthington wrote:> > Dear R users, > > I have recently begun to reuse some functions I made several months ago. The > scripts write to a .csv file using the 'write.csv' function with the append > option set to TRUE. This used to work fine, albeit with the warning > "appending column names to file". I upgraded to R version 2.11.0 on OSX > 10.5.8 and 'write.csv' will no longer append any files - I get the warning > "attempt to set 'append' ignored". The exact same object will append when > using 'write.table' without issue. Here's a minimal example. Has there been > a change in 'write.csv'? > > # -------------------------------- > x<- rnorm(10, 5) > y<- rnorm(10, 10) > z<- rnorm(10, 15) > dat<- data.frame(x, y, z) > names(dat)<- c("first", "second", "third") > > write.csv(dat, file="dat.csv", append=TRUE) > write.table(dat, file="dat2.csv", sep=",", row.names=FALSE, append=TRUE) > # -------------------------------- >It's always a good idea to check the NEWS file. Here is a quote: "write.csv[2] no longer allow 'append' to be changed: as ever, direct calls to write.table() give more flexibility as well as more room for error." So use write.table. -Peter Ehlers