Message-ID: <alpine.OSX.1.00.0901281452150.97868@tystie.local>
Date: 2009-01-28T15:00:42Z
From: Brian Ripley
Subject: putting match.call to good use
In-Reply-To: <49806BD8.1090804@c2i.net>
On Wed, 28 Jan 2009, Harald Eikrem wrote:
> ( I just became aware the mailer enforces html bodies, as such removed by the
> list handler. Sorry about that. My message was )
>
> I have this function
>
> slm <- function(fun=lm, ...) {
> #ilm <- eval(match.call()[-1]); # no way
> ilm <- eval(parse(text=sub("^list", deparse(substitute(fun)),
> deparse(substitute(...())))));
> ...
>
> The latter actually does the trick, but recognising how some gurus hate
> parse, I would like to know if this can anyhow be done with match.call, or
> any other reasonable solution.
>
> The issue here is that lm (and likewise glm, bayesglm, etc.) returns the
> function call, which needs to show up as the original args to slm of course.
The way to do this is eval(substitute()). E.g. from the new Rd2HTML
Rd <- eval(substitute(parse_Rd(f, encoding = enc),
list(f = Rd,enc = encoding)))
--
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