From murdoch at stats.uwo.ca  Thu Mar  2 17:19:47 2006
From: murdoch at stats.uwo.ca (Duncan Murdoch)
Date: Thu, 02 Mar 2006 11:19:47 -0500
Subject: [Rd] Named parameters in optim()
Message-ID: <44071B23.2000706@stats.uwo.ca>

If I name the elements of the vector of initial values passed to 
optim(), then it attaches the names to the final result, e.g.

 > f <- function(parms) (parms[1]-1)^2+(parms[2]-2)^2
 > optim(c(x=3,y=4), f)
$par
         x         y
0.9999635 2.0003241

$value
[1] 1.063637e-07

$counts
function gradient
       65       NA

$convergence
[1] 0

$message
NULL

However, the vector that gets passed to f doesn't have its names attached:

 > f <- function(parms) {
+  print(parms)
+  (parms["x"]-1)^2+(parms["y"]-2)^2
+ }
 > optim(c(x=3,y=4), f)
[1] 3 4
Error in optim(c(x = 3, y = 4), f) : function cannot be evaluated at 
initial parameters

Is this something that should be fixed, i.e. could it be fixed without 
making optim() substantially slower?  If not, it's at least something 
that should be documented.

Duncan Murdoch



[Rd] Named parameters in optim()
Duncan Murdoch