[R] putting match.call to good use
Peter Dalgaard
P.Dalgaard at biostat.ku.dk
Wed Jan 28 16:29:37 CET 2009
Prof Brian Ripley wrote:
> 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)))
>
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.
--
O__ ---- Peter Dalgaard Øster Farimagsgade 5, Entr.B
c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
More information about the R-help
mailing list