[R] do.call and plotting functions ...
Prof Brian Ripley
ripley at stats.ox.ac.uk
Wed Nov 19 15:27:14 CET 2008
The help pages (here for bquote) are your friend.
I don't think you really want to do this via do.call(), as you want some
arguments evaluated and some unevaluated. Rather, match.call(), alter it
as you want, and then eval.parent it. Something like
ploteps <- function(file, plotFunction, ...)
{
Call <- match.call()
fn <- deparse(substitute(plotFunction))
Call[[1]] <- as.name(fn)
Call$file <- Call$plotFunction <- NULL
postscript(file=file)
eval.parent(Call)
dev.off()
}
ploteps("foo.eps", hist, xlab = "X", rnorm(100))
On Wed, 19 Nov 2008, Roberto Brunelli wrote:
> I'm trying to write a simple wrapper for plotting functions to make
> them print to postscript, something like
>
> ploteps <- function(file, plotFunction, ...) {
>
> args <- list(bquote(...))
>
> # prepare postscript device
>
> do.call(plot, args)
>
> # close postscript device
> }
>
> I have inserted the bquote otherwise I get a lot of numbers in the
> plot when I plot/hist something. But if I invoke the function as
>
> ploteps("foo.eps", hist, xlab = "X")
>
> I get
>
> Error in bquote(...) : unused argument(s) (xlab = "X")
>
> What am I messing up?
>
>
> Thanks a lot,
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-help
mailing list