Skip to content

putting match.call to good use

5 messages · Harald Eikrem, Brian Ripley, Peter Dalgaard +1 more

#
( 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.

   ~~harald e
#
On Wed, 28 Jan 2009, Harald Eikrem wrote:

            
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)))
#
Prof Brian Ripley wrote:
I don't understand the

   substitute(...())

bit (looks like an unexpected feature), but I suspect that it might also
be a good idea to read and understand the first dozen lines or so of the
lm function itself.
#
Prof Brian Ripley <ripley <at> stats.ox.ac.uk> writes:
What is Rd2HTML? 

Dieter
#
On Wed, 28 Jan 2009, Dieter Menne wrote:

            
A function in the R-devel version of R (is 'new' not rather a hint?).
o	parse_Rd(), an experimental parser for Rd files, and Rd2txt(),
 	Rd2HTML(), Rd2latex() and Rd2ex(), even more experimental
 	converters, have been added to package 'tools'.