Błąd w get (as.character (FUN), mode = „function”, envir = envir)

Jestem nowy w R, więc wybacz mi, jeśli pytanie jest trochę głupie. Usiłuję napisać prostą pętlę while dla iteracji funkcji wartości. Moja funkcja (optim.routine) używa solvera ipoptr. Oto mój kod:

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
}

gdzie optim.routine jest następującą funkcją:

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
  }
}

i deriv jest funkcją, która oblicza pochodne.

Otrzymuję następujący błąd, jeśli spróbuję uruchomić kod:

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

a jeśli debuguję funkcję:

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

Jeśli funkcja jest pobierana tylko bez pętli while, nie jest wyświetlany błąd. Szczerze mówiąc, nie mam pojęcia. Każda pomoc jest bardzo mile widziana. Dzięki!

Claudia

questionAnswers(2)

yourAnswerToTheQuestion