[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