From hb at biostat.ucsf.edu  Tue Dec 17 22:44:48 2013
From: hb at biostat.ucsf.edu (Henrik Bengtsson)
Date: Tue, 17 Dec 2013 13:44:48 -0800
Subject: [Rd] In-string variable/symbol substitution: What formats/syntax is
	out there?
Message-ID: <CAFDcVCQ-fXQh3Hm6EDji-Nuv1Pk53=n2fM=KH++HLO0-xbSVvg@mail.gmail.com>

Hi,

I'm try to collect a list of methods/packages available in R for doing
in-string variable/symbol substitution, e.g. someFcn("pi=${pi}"),
anotherFcn("pi=@pi@") and so on becomes "pi=3.141593".  I am aware of
the following:

** gsubfn() in the 'gsubfn' package, e.g.
> gsubfn( , , "pi = $pi, 2pi = `2*pi`")
[1] "pi = 3.14159265358979, 2pi = 6.28318530717959"


** gstring() in the 'R.utils' package, e.g.
> gstring("pi = ${pi}, 2pi = ${`2*pi`}")
[1] "pi = 3.14159265358979, 2pi = 6.28318530717959"


I'm sure there are other approaches - do you know of any in R?  They
don't have to support in-line calculations such as in the first two
examples, but if they do, it's a bonus.  I'm looking for simpler
functions and not full blown literate programming methods (e.g.
Sweave, noweb, knitr, brew, RSP, ...).  It should also be *in-string*
substitution out of the box, so sub(), sprintf() and friends does not
count.

Thanks

Henrik

PS. The following is on the borderline because it does not do
automatic variable look up, but since others may bring it up and/or
know of a neater approach, I mention it too:

** copySubstitute() in the 'Biobase' package (with some efforts), e.g.
> bbsubst <- function(fmt, ...) {
  args <- lapply(list(...), FUN=as.character)
  in <- textConnection(fmt)
  out <- textConnection("res", open="w")
  on.exit({ close(in); close(out) })
  copySubstitute(in, out, symbolValues=args)
  res
}
> bbsubst("pi = @pi@", pi=pi)
[1] "pi = 3.14159265358979"



[Rd] In-string variable/symbol substitution: What formats/syntax is out there?
Henrik Bengtsson