Error en get (as.character (FUN), mode = “function”, envir = envir)

Soy nuevo en R, así que perdóname si la pregunta es un poco tonta. Estoy tratando de escribir un bucle while simple para una iteración de función de valor. Mi función (optim.routine) utiliza el solucionador ipoptr. Aquí está mi código:

d<-1
old1<-0
old2<-0
num.iter<-0
i.esp<-1e-05
i.T<-100
lb<-0
ub<-10

while (d>i.eps & num.iter<i.T){
new1 <- optim.routine(old1, old2, eval_f=eval_f, eval_grad_f=eval_grad_f, lb=lb, ub=ub, update=FALSE)
d<-dist(c(old1, new1), method="euclidean")
num.iter<-num.iter+1
old1<-new1
}

donde optim.routine es la siguiente función:

optim.routine<-function(old1, old2, eval_f=obj, eval_grad_f=obj.deriv, lb=lb, ub=ub, update){
  if (isTRUE(update)){
    var2<-old2
    var1<-old1
    var1.deriv<-deriv(var1)
    optimize <- ipoptr(x0 = old2, eval_f = eval_f, eval_grad_f = eval_grad_f, lb = lb,
                       ub = ub)

    new1<- optimize$objective
    new2<- optimize$solution
    old2<-new2
    old1<-new1
  }else{
    var2<-old2
    var1<-old1
    var1.deriv<-vf.deriv(var1)
    optimize <- ipoptr(x0 = old2, eval_f = eval_f, eval_grad_f = eval_grad_f, lb = lb,
                       ub = ub)

    new1<- optimize$objective
    new2<- optimize$solution
    old1<-new1
  }
}

y deriv es una función que calcula derivadas.

Me sale el siguiente error si intento ejecutar el código:

source('/mnt/ide0/home/myname/Documents/optim.R')
Error in get(as.character(FUN), mode = "function", envir = envir) : 
  object 'fn' of mode 'function' was not found

y si depuro la función:

Browse[2]> n
Error in isTRUE(update) : argument "update" is missing, with no default

Si solo obtengo la función sin el bucle while, no se muestra ningún error. Sinceramente, no tengo ni idea. Cualquier ayuda es muy apreciada. ¡Gracias!

Claudia

Respuestas a la pregunta(2)

Su respuesta a la pregunta