R nlm起始值的选择问题

R nlm起始值的选择问题,r,error-handling,for-loop,nlm,R,Error Handling,For Loop,Nlm,需要使用nlm函数估计两个参数 fit<-nlm(hood2par,c(x01[i],x02[j]),iterlim=300, catch=x[,c(3,4,5)],sp=.5) 接下来,我创建一个包含在double for中的例程来查找值​​这将导致函数的收敛: for (i in 1:length(x01)) { for (j in 1:length(x02)) { fit <- NULL try(fit <- nlm(hood2par, c(x01[i],x02[j]

需要使用nlm函数估计两个参数

fit<-nlm(hood2par,c(x01[i],x02[j]),iterlim=300, catch=x[,c(3,4,5)],sp=.5)
接下来,我创建一个包含在double for中的例程来查找值​​这将导致函数的收敛:

for (i in 1:length(x01)) { for (j in 1:length(x02)) {

fit <- NULL
try(fit <- nlm(hood2par, c(x01[i],x02[j]), iterlim = 300, catch = x[,c(3,4,5)],
               sp = .5), 
    silent = TRUE)
stopifnot(is.null(fit))}} 
FFF <- function(x01, x02, catch){
    for (i in 1:length(x01)) { 
        for (j in 1:length(x02)) {
            fit <- NULL
            try(fit <- nlm(hood2par, c(x01[i], x02[j]), iterlim = 300,
                           catch = x[,c(3,4,5)], sp = .5), 
               silent = TRUE) # does not stop in the case of err
            stopifnot(is.null(fit))
        }
     }  
return(fit)
}
我试图在条件的第二个参数中包含break函数,但它在我的R版本中没有运行……有什么想法吗?

当调用FFF时,在try块内如果nlm成功完成,则分配fit,并且激活stopifnot条件,抛出错误

疯狂的猜测,你是说

stopifnot(!is.null(fit))
作为将来的参考,try使用的标准代码块是

调用FFF时,如果nlm成功完成,则在try块内分配fit,并激活stopifnot条件,引发错误

疯狂的猜测,你是说

stopifnot(!is.null(fit))
作为将来的参考,try使用的标准代码块是


如果你把代码划出空格并缩进,阅读起来就容易多了!!谢谢加文的邀请comment@Juan:说它不运行是不够具体的有用。它会抛出错误吗?如果是,哪一个错误?或者它只是给出了与预期不同的行为?请提供更多细节@胡安:而且,如果代码是可复制的,那么问题就更容易解决,而你的代码是不可复制的,因为没有提供hood2par。如果你将代码隔开并缩进,那么阅读起来就容易多了!!谢谢加文的邀请comment@Juan:说它不运行是不够具体的有用。它会抛出错误吗?如果是,哪一个错误?或者它只是给出了与预期不同的行为?请提供更多细节@胡安:而且,当代码是可复制的时,问题更容易解决,而你的代码是不可复制的,因为没有提供hood2par。
res <- try(some_expression)
if(inherits(res, "try-error"))
{
  #some code to keep loops running
} else
{
  #stop the loops and gather "res" 
}
stopifnot(!is.null(fit))
res <- try(some_expression)
if(inherits(res, "try-error"))
{
  #some error handling code
} else
{
  #normal execution
}