From hb at stat.berkeley.edu  Sun Jul 16 13:18:43 2006
From: hb at stat.berkeley.edu (Henrik Bengtsson)
Date: Sun, 16 Jul 2006 13:18:43 +0200
Subject: [Rd] Fwd: Generating valid R code using R
In-Reply-To: <59d7961d0607160211v5941f05dwd8bc7de1ee5489ab@mail.gmail.com>
References: <59d7961d0607160211v5941f05dwd8bc7de1ee5489ab@mail.gmail.com>
Message-ID: <59d7961d0607160418hfa08022y945091969814577e@mail.gmail.com>

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?

Thanks

Henrik



[Rd] Fwd: Generating valid R code using R
Henrik Bengtsson