[R] can a function alter the "..." argument and passed the result to another function?
Uwe Ligges
ligges at statistik.tu-dortmund.de
Fri Dec 19 11:28:59 CET 2008
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?
> }
do.call() is your friend here, because you can easily pass a *list* of
arguments to the function when calling it:
parent <- function(stuff, ...) {
dots <- list(...)
if (!"type" %in% names(list)) dots$type <- 'l'
do.call("plot", c(list(x=stuff), dots))
}
Best,
Uwe Ligges
> 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.
>
> D. Kelley
> Oceanography Department, Dalhousie University
> Halifax, Nova Scotia, Canada
>
> ______________________________________________
> R-help at 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.
More information about the R-help
mailing list