[Rd] Modifying parsed code

Duncan Murdoch murdoch at stats.uwo.ca
Fri Jul 7 14:48:34 CEST 2006

On 7/7/2006 8:08 AM, hadley wickham wrote:
> I would like to take this:
> .img(plot(1:10), filename="a")
> and produce
> plot(1:10)
> ie. whenever .img is used, I want to take the first argument and throw
> away everything else.
> (I am trying to produce a Sweave like environment in which I can apply
> certain functions, but not have them displayed in the output)
> I think I should be able to do it using substitute, but I don't know
> how to operate on language objects.  Any hints would be appreciated.

Supposing that .img has a header something like this:

.img <- function(input, filename)

what you would do is this:

expr <- substitute(input)  # now expr is the unevaluated expression
what <- deparse(expr)     # now what is a text representation of it
eval(expr, envir=parent.frame()) # this should produce the same result
				 # as evaluating input

Duncan Murdoch

More information about the R-devel mailing list