[R] putting match.call to good use

Prof Brian Ripley ripley at stats.ox.ac.uk
Wed Jan 28 16:00:42 CET 2009


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




More information about the R-help mailing list