我已经编写了一个R脚本,其中包含一个用于检索外部(Web)数据的循环。数据的格式大部分时间都是相同的,但有时格式会以不可预知的方式变化,并且我的循环崩溃(停止运行)。R脚本 - 如何在错误时继续执行代码
有没有办法继续代码执行,无论错误?我正在寻找类似于来自VBA的“On error Resume Next”。
预先感谢您。
我已经编写了一个R脚本,其中包含一个用于检索外部(Web)数据的循环。数据的格式大部分时间都是相同的,但有时格式会以不可预知的方式变化,并且我的循环崩溃(停止运行)。R脚本 - 如何在错误时继续执行代码
有没有办法继续代码执行,无论错误?我正在寻找类似于来自VBA的“On error Resume Next”。
预先感谢您。
您可以使用try
:
# a has not been defined
for(i in 1:3)
{
if(i==2) try(print(a),silent=TRUE)
else print(i)
}
使用try
或tryCatch
。
for(i in something)
{
res <- try(expression_to_get_data)
if(inherits(res, "try-error"))
{
#error handling code, maybe just skip this iteration using
continue
}
#rest of iteration for case of no error
}
在我看来,使用tryCatch代替try,更清晰的语法和更多的控制。 – Hansi 2012-01-13 17:53:58
@Hansi:同意'tryCatch'一旦你知道它就更清洁了,虽然需要更长的时间才能理解,所以我认为'try'更适合VBA程序员。 <*ducks*> – 2012-01-13 18:00:50
如何有关此相关的问题这些解决方案:
Is there a way to `source()` and continue after an error?
无论parse(file = "script.R")
随后在结果中的每一表达loop'd try(eval())
。
或evaluate
包。
感谢您的快速响应。如果我想在扩展为多行的代码中应用“try”,那么语法是什么? – 2012-01-13 15:00:51
我想用一个函数:'try([在这里插入一个函数]) – 2012-01-13 15:10:57
或者使用分号:'try({a <-1; 2 + 2})' – 2012-01-13 15:23:58