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@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel