[Rd] messing with ...

Tony Plate tplate at acm.org
Wed Aug 13 18:35:44 CEST 2008

Ben Bolker wrote:
>   I'm looking for advice on manipulating parameters that
> are going to be passed through to another function.
>   Specifically, I am working on my version of "mle",
> which is a wrapper for optim (among other optimizers).
> I would prefer not to replicate the entire argument
> list of optim(), so I'm using ... to pass extra arguments
> through.
>   However:
>     the starting values are specified as a list,
> which means that users can potentially specify them
> in any order (or at least that's the way it works
> now -- one solution to the problem I'm about to state
> is to insist that they specify the parameters in the
> same order as they are given in the arguments of
> the objective function).
>   However, there are other arguments (lower, upper,
> control$parscale, control$ndeps) that should all
> be in the same order as the objective function
> definition by the time they get to optim()).  I can
> think of a few solutions:
>  (1) make the user specify them all in the right order (ugh)
>  (2) add all of them as explicit parameters to my function
> so that I can rearrange them appropriately (ugh)
>  (3) mess with the ... argument before it gets passed
> through to optim (impossible?)
>  (4) capture ... as arglist <- list(...), manipulate the arguments
> as necessary, then pass them along to optim as
> do.call("optim",arglist) (ugh but maybe the best solution?)
>   any thoughts?
here's my two cents:
- require names on parameters, rather than order
- construct calls and use eval() rather than do.call() (then you can 
manipulate list(...) without the ugh factor of do.call() -- though is 
do.call() any different to eval() in R? -- I know in S-PLUS that the use 
of do.call() can completely blow out memory usage)
- to avoid manually duplicating arg lists, use constructs like 
names(formals(optim)) and pmatch to find args that below to the 
optimizer function vs the objective function

-- Tony Plate
>  thanks
>   Ben Bolker
> ------------------------------------------------------------------------
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

More information about the R-devel mailing list