Duncan Murdoch wrote:
On 24/07/2009 6:35 PM, Frank E Harrell Jr wrote:
Dear Group:

I want to create a function having a ... argument and to have the default arguments evaluated, as thus:

g <- function(a, b, ...) a+b
formals(g) <- alist(a=,b=2+3,...=)
g
function (a, b = 2 + 3, ...)
a + b

But I want the default argument for b to be evaluated as 5. How can this be done? Note: My real need is for a more complex expression to be evaluated for the default value of an argument.

I can use formals(g) <- list(a=NULL, b=2+3, ...=NULL) but then list(...) doesn't behave properly in the function.

Not sure if it's "most elegant", but I think this works:

formals(g) <- eval(substitute(alist(a=,b=default,...=),
                   list(default=2+3)))

Duncan Murdoch

Thank you Duncan.  That works perfectly.
Frank




--
Frank E Harrell Jr   Professor and Chair           School of Medicine
                     Department of Biostatistics   Vanderbilt University

______________________________________________
R-help@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.

Reply via email to