[R] how to manipulate ... within a function
Duncan Murdoch
murdoch at stats.uwo.ca
Fri Dec 19 02:36:22 CET 2008
On 18/12/2008 7:19 PM, Dan Kelley wrote:
> Is there a way a function ('parent', say) can manipulate the ... argument,
> and then pass the manipulated value into another function ('child', say)
> that it calls?
>
> What I'm trying to do is to use some plotting defaults within 'parent' that
> are not part of parent's argument list, but to let the use over-ride these
> defaults if they choose. A sketch is below.
>
> parent <- function(stuff, ...) {
> dots <- list(...)
> if (!"type" in names(list)) dots$type='p'
> plot(stuff, unlist(dots)) # or alist()? or what?
You use the do.call() function to construct the call. The first arg is
what to call, the second is a list containing the args to pass. Since
you've got both stuff and dots to pass, you concatenate them into one
big list:
do.call(plot, c(list(stuff), dots))
Duncan Murdoch
> }
>
> I know, I can just make "type" be a formal argument of 'parent', and I'm
> happy to do that, but I'm still in the learning stages with R, and so I'm
> trying to become more familiar with as much R syntax as I can, even if I end
> up doing things differently later on.
More information about the R-help
mailing list