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