首页 > 解决方案 > 错误后在 R 中继续循环(使用数字和字母向量的示例)

问题描述

我目前正在做一个项目,我正在尝试在 for 循环中完成一项任务。有很多地方可能会出错(它涉及通过 rmarkdown 创建 pdf 报告),但在这种情况下,我不在乎是否出现问题,我只希望 for 循环继续运行。

在下面的玩具示例中,我希望能够打印出数字 2 到 16,同时跳过字母“a”。

something<-function(x){
print(x + 1)
}

for(i in c(1:10,'a',11:15))
{
  res <- try(something(i))
  if(inherits(res, "try-error"))
  {
    #error handling code, maybe just skip this iteration using
    next
  }
  #rest of iteration for case of no error
}

这大致基于以下答案中提供的示例。

R 脚本 - 如何在出现错误时继续执行代码

我尝试过调整其他几个“如何在 R 中继续 for 循环”但没有成功。

我不是一个全职程序员,所以我确信我错过了一些非常简单的东西,但任何帮助都将不胜感激。

标签: rloopserror-handling

解决方案


我有一个类似的问题,我有一个在for循环中运行的函数,如果出现,我需要它继续运行error。我是这样做的:

OutputStorage=list()

for (i in 1:k){
  Output=tryCatch(examplefunction(x), error=function(e) NULL)
  OutputStorage[[i]]=Output
}

因此,如果有输出,则将其存储在 中list,如果没有,NULL则为此存储。我认为它有效;实际上只是现在运行它。希望有帮助!


推荐阅读