r - 错误后在 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 中继续 for 循环”但没有成功。
我不是一个全职程序员,所以我确信我错过了一些非常简单的东西,但任何帮助都将不胜感激。
解决方案
我有一个类似的问题,我有一个在for
循环中运行的函数,如果出现,我需要它继续运行error
。我是这样做的:
OutputStorage=list()
for (i in 1:k){
Output=tryCatch(examplefunction(x), error=function(e) NULL)
OutputStorage[[i]]=Output
}
因此,如果有输出,则将其存储在 中list
,如果没有,NULL
则为此存储。我认为它有效;实际上只是现在运行它。希望有帮助!
推荐阅读
- android - iOS/Android - 通过 SDK 禁用移动数据(蜂窝数据)
- c# - EF Core - 等效于 IQueryable 搜索的表达式树
- c# - EF 6 保存多级子实体和多个父级
- rest - REST org.xml.sax.SAXParseException;行号:1;列号:1;文件过早结束
- python - 最佳解决方案的建议 - Python
- javascript - 使用 Jest 测试 Redux 和 Axios 获取中间件
- docker - 从 localhost 的另一个容器内的容器访问 docker 端口
- html - 如何在输入标签中将文本移动到更高的位置并在到达结束行时输入?
- oracle - sysdate() 导致 Postgres 忽略索引并进行昂贵的顺序扫描
- python - 在熊猫的列上滚动分位数