0

我正在使用 fitdistrplus 包的 fitdist 函数。对于某些发行版,我得到一个错误。我不介意我只是希望程序不要停止,并为变量赋值并继续。

根据我的帮助,我的代码如下所示:

i=1
for (data in results)
  for (dist in distributions)
    resultst[[i]] <- tryCatch(
      fitdist( data, dist,method="mle",
           start=list(mean=mapply("[[", results[i], 1),
                      sd=mapply("[[", results[i], 2)),
           fix.arg=list(a=minv,b=maxv)),
           error = function(e) results[[i]])
       i=i+1

但是得到这个错误:

Error in resultst[[i]] <- tryCatch(fitdist(data, dist, method = "mle",  :
more elements supplied than there are to replace

解决方案:

i=1
for (data in results)
  for (dist in distributions)
  params <- tryCatch(
  fitdist( data, dist,method="mle",
           start=list(mapply("[[", results[i], 1),
                      mapply("[[", results[i], 2)),
           fix.arg=list(a=minv,b=maxv)),
           error = function(e) {
             fitdist( data, substring(dist,2),method="mle",
                      start=list(mapply("[[", results[i], 1),
                                 mapply("[[", results[i], 2)))
           })
resultst[i]<-params
resultst2[[i]]<-params
i=i+1

编辑将 i=0 更改为 i=1 (我的错误!)包括参数

4

1 回答 1

3

正如 Dason 评论的那样,tryCatch应该会有所帮助:

List2[[i]] <- tryCatch(
                    fitdist( data, dist,method="mle",
                          start=list(mean=x,
                                     sd=y,
                          fix.arg=list(a=minv,b=maxv)),
                    error = function(e) List1[[i]] 
              )
于 2012-08-25T23:37:17.933 回答