如何跳过循环中的迭代?

时间:2019-08-13 08:25:38

标签: r for-loop iteration

我有一个for循环,它看起来像这样:

 for (ID in rownames(countDF)) {
      avector <- as.vector(as.numeric(countDF2[rownames(countDF2)==ID,]))
      nbfit <- fitdistr(avector,'negative binomial')
 }

因此,我想为每个ID计算fitdistr函数。但是问题在于,对于某些ID,该功能无法正常工作并引发错误。在这里:

  

统计信息中的错误:: optim(x = c(0,0,0,0,0,0,0,0,0,0,0,0,0,:     非有限有限差分值[2]

我想以某种方式跳过这些ID,然后继续使用其他ID。

我发现了一个函数try,但是我不明白它是如何工作的。 我已经这样尝试过了:

 nbfir <- try(fitdistr(avector,'negative binomial'))

但是循环仍然因错误而中断。 我该怎么解决?

1 个答案:

答案 0 :(得分:2)

您可以使用tryCatch并且在捕获错误时不执行任何操作。

for (ID in rownames(countDF)) {
   avector <- as.vector(as.numeric(countDF2[rownames(countDF2)==ID,]))
  tryCatch(
     nbfit <- fitdistr(avector,'negative binomial'), 
     error = function(e) {})
}