Re: [R] How to convert "c:\a\b" to "c:/a/b"

From: Prof Brian Ripley <>
Date: Wed 29 Jun 2005 - 16:46:27 EST

On Wed, 29 Jun 2005, David Duffy wrote:

> I couldn't resist adding a more literal answer

This can only work for escapes which are preserved. The parser maps \n to a character (LF) and the deparser maps it back to \n. This happens to be true of \a \b \f \n \r \t \v \\ but no others.

For example, \s is mapped to s, and there is no difference between \s and s in the parsed input.

> unback <- function(x) {
> chars <- unlist(strsplit(deparse(x),""))
> chars <- chars[-c(1,length(chars))]
> paste(gsub("\\\\","/",chars),collapse="")
> }
> unback("\n")

> unback("\s")

[1] "s"

Spencer Graves keeps on insisting there is a better way, but all the solutions are to avoid sending the string to the parser, and hence avoiding having the string directly in an R script. This is common in shell scripts, which use 'here' documents to avoid 'quoting hell'.

We can do that in R too. Here are two variants I have not seen in the thread

scan("", "", allowEscapes=FALSE, n=1, quiet=TRUE) D:\spencerg\dataPOWER\stats\Tukey\Boxplot_missing_Tukey2.txt catIx, "\n", sep="")

R --slave --vanilla < test1.R

(This one does not allow quoted strings.)

x <- readLines(stdin(), n=1)
"D:\spencerg\dataPOWER\stats\Tukey\Boxplot_missing_Tukey2.txt" x <- gsub('^"(.*)"$', "\\1", x)
cat(x, "\n")

R --slave --vanilla < test2.R

(This one allows surrounding quotes or not.)

Brian D. Ripley,        
Professor of Applied Statistics,
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________ mailing list
PLEASE do read the posting guide!
Received on Wed Jun 29 17:51:17 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:33:06 EST