[Rd] Fwd: Generating valid R code using R
Peter Dalgaard
p.dalgaard at biostat.ku.dk
Sun Jul 16 14:26:30 CEST 2006
"Henrik Bengtsson" <hb at stat.berkeley.edu> writes:
> Sorry, this question was supposed to go to r-devel; move it there now. /HB
>
> ---------- Forwarded message ----------
> From: Henrik Bengtsson <hb at stat.berkeley.edu>
> Date: Jul 16, 2006 11:11 AM
> Subject: Generating valid R code using R
> To: R-help <r-help at stat.math.ethz.ch>
>
>
> Hi,
>
> I'm trying to generate valid R code using R. Parts of the task is to
> read a sequence of characters from file and escape them such that they
> can be put in quotation marks to form a valid R code string. Example:
>
> Let the input file be (four rows containing ASCII 0-255 characters):
> abcdef<tab>ghijk\nlmno
> second row\t\a\\
>
> fourth and so on...
> <EOF>
>
> Now, find escapeString() such that the following piece of code
> generates a second file called 'file2.txt' which is identical to
> 'file1.txt':
>
> inStr <- readChar("file1.txt", nchars=999)
> esStr <- escapeString(inStr)
> rCode <- sprintf('cat(file="file2.txt", "%s")', esStr)
> cat(file="foo.R", rCode)
> source("foo.R")
>
> For instance, quotation marks has to be escaped in order for 'rCode'
> to be valid, same with newlines etc. What's the best way to do this?
> Currently I use an ad hoc sequence of gsub() substitutions to do this,
> but is there a better way to create the 'rCode' string?
I'd look in the direction of deparse/dput, as in
> X
[1] "abc\t\nfoobar\"\n"
> cat(X)
abc
foobar"
> deparse(X)
[1] "\"abc\\t\\nfoobar\\\"\\n\""
--
O__ ---- Peter Dalgaard Øster Farimagsgade 5, Entr.B
c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
More information about the R-devel
mailing list