[R] write.table produces a file that read.table can't read
MacQueen, Don
macqueen1 at llnl.gov
Wed Oct 8 18:34:27 CEST 2014
How about:
tmp <- data.frame(a=1:3, b=c("a", "b\"b", "c"))
write.table(tmp, './tmp.write', row.names=FALSE, sep="\t², quote=FALSE)
tmp.in <- read.table('./tmp.write', sep='\t', head=TRUE, quote="")
> all.equal(tmp, tmp.in)
[1] TRUE
-Don
--
Don MacQueen
Lawrence Livermore National Laboratory
7000 East Ave., L-627
Livermore, CA 94550
925-423-1062
On 10/8/14, 7:22 AM, "Neal H. Walfield" <neal at walfield.org> wrote:
>Hi,
>
>I'm using R version 3.1.1 on Debian via the CRAN repositories.
>
>Consider the following MWE that writes a data.frame out to a file and
>reads it back in (note that one of the strings contains a double
>quote):
>
> > write.table(data.frame(a=1:3, b=c("a", "b\"b", "c")), '/tmp/a',
>row.names=FALSE, na="?", sep=",")
> > read.table('/tmp/a', header=TRUE, row.names=NULL, sep=',',
>na.strings='?', allowEscapes=T)
> [1] a b
> <0 rows> (or 0-length row.names)
>
>/tmp/a contains the following:
>
> $ cat /tmp/a
> "a","b"
> 1,"a"
> 2,"b\"b"
> 3,"c"
>
>Removing the double quote, it works:
>
> > write.table(data.frame(a=1:3, b=c("a", "bb", "c")), '/tmp/a',
>row.names=FALSE, na="?", sep=",")
> > read.table('/tmp/a', header=TRUE, row.names=NULL, sep=',',
>na.strings='?', allowEscapes=T)
> a b
> 1 1 a
> 2 2 bb
> 3 3 c
>
>Why does allowEscapes not work for double quotes? Or, why does
>write.table produce a file that read.table can't read!
>
>Thanks for any advice!
>
>Neal
>
>______________________________________________
>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