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.