From ggrothendieck at gmail.com  Mon Jul  4 20:46:32 2005
From: ggrothendieck at gmail.com (Gabor Grothendieck)
Date: Mon, 4 Jul 2005 14:46:32 -0400
Subject: [Rd] [R] How to convert "c:\a\b" to "c:/a/b"
In-Reply-To: <42C97B1A.2030009@pdf.com>
References: <mailman.13.1119952801.1160.r-help@stat.math.ethz.ch>
	<Pine.LNX.4.58.0506291257160.7756@orpheus.qimr.edu.au>
	<Pine.LNX.4.61.0506290732540.6049@gannet.stats>
	<42C31B56.1070808@pdf.com> <42C97B1A.2030009@pdf.com>
Message-ID: <971536df050704114682756e8@mail.gmail.com>

The readLines example, as written, does not work in sourced files and therefore
will not work in the Examples section of .Rd pages either. 

Currently readLines does not process its input and I think it would
not be a good idea to change that philosophy.

On 7/4/05, Spencer Graves <spencer.graves at pdf.com> wrote:
> ANOTHER EXAMPLE FOR "gsub"?
> 
>          I would like to suggest that some version of Prof. Ripley's answer to
> my recent post to r-help (subject as above) be added to the "Examples"
> for "gsub":
> 
> ## CAUTION:  XEmacs may hang on "readLines"
> ## unless submitted by itself
> (x <- readLines(stdin(), n=1))
> D:\spencerg\dataPOWER\stats\Tukey\Boxplot_missing_Tukey2.txt
> (x <- gsub("\\\\", "/", x))
> 
> ANOTHER OPTION FOR "readLines"?
> 
>          I don't know if this issue is sufficiently important to justify
> adding an argument to have "readLines" to change "\" to "/", but if so,
> it does not seem difficult:
> 
> readLines. <-
> function (con = stdin(), n = -1, ok = TRUE,
>           reverseBackSlash=FALSE)
> {
>     if (is.character(con)) {
>         con <- file(con, "r")
>         on.exit(close(con))
>     }
>     if(reverseBackSlash){
>       dat <- .Internal(readLines(con, n, ok))
>       return(gsub("\\\\", "/", dat))
>     }
>     .Internal(readLines(con, n, ok))
> }
> 
> (x <- readLines.(stdin(), n=1, reverseBackSlash=TRUE))
> D:\spencerg\dataPOWER\stats\Tukey\Boxplot_missing_Tukey2.txt
> 
>          This has been tested (in this one example) under XEmacs / ESS and
> Rgui for R 2.1.1 patched.
> 
>          Thanks for your great support of the R project and through that
> making it much easier for people to learn and use improved statistical
> methods and to advance the science even further.
> 
>          Best Wishes,
>          spencer graves
> 
> Spencer Graves wrote:
> 
> > Thank You, Prof. Ripley!
> >
> >       Both "test1.R" and "test2.R" worked for me just now, as did the
> > following minor modification:
> >
> > (x <- readLines(stdin(), n=1))
> > D:\spencerg\dataPOWER\stats\Tukey\Boxplot_missing_Tukey2.txt
> >
> >       Thanks again.
> >
> >       spencer graves
> >
> > Prof Brian Ripley wrote:
> >
> >> 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
> >>
> >> test1.R:
> >> scan("", "", allowEscapes=FALSE, n=1, quiet=TRUE)
> >> D:\spencerg\dataPOWER\stats\Tukey\Boxplot_missing_Tukey2.txt
> >> catIx, "\n", sep="")
> >>
> >> R --slave --vanilla < test1.R
> >> D:\spencerg\dataPOWER\stats\Tukey\Boxplot_missing_Tukey2.txt
> >>
> >> (This one does not allow quoted strings.)
> >>
> >> test2.R:
> >> 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
> >> D:\spencerg\dataPOWER\stats\Tukey\Boxplot_missing_Tukey2.txt
> >>
> >> (This one allows surrounding quotes or not.)
> >>
> >
> 
> --
> Spencer Graves, PhD
> Senior Development Engineer
> PDF Solutions, Inc.
> 333 West San Carlos Street Suite 700
> San Jose, CA 95110, USA
> 
> spencer.graves at pdf.com
> www.pdf.com <http://www.pdf.com>
> Tel:  408-938-4420
> Fax: 408-280-7915
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



[Rd] [R] How to convert "c:\a\b" to "c:/a/b"
Gabor Grothendieck