2012-01-13 117 views
21

我已经编写了一个R脚本,其中包含一个用于检索外部(Web)数据的循环。数据的格式大部分时间都是相同的,但有时格式会以不可预知的方式变化,并且我的循环崩溃(停止运行)。R脚本 - 如何在错误时继续执行代码

有没有办法继续代码执行,无论错误?我正在寻找类似于来自VBA的“On error Resume Next”。

预先感谢您。

回答

5

您可以使用try

# a has not been defined 
for(i in 1:3) 
{ 
    if(i==2) try(print(a),silent=TRUE) 
    else print(i) 
} 
+0

感谢您的快速响应。如果我想在扩展为多行的代码中应用“try”,那么语法是什么? – 2012-01-13 15:00:51

+0

我想用一个函数:'try([在这里插入一个函数]) – 2012-01-13 15:10:57

+0

或者使用分号:'try({a <-1; 2 + 2})' – 2012-01-13 15:23:58

21

使用trytryCatch

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 
} 
+1

在我看来,使用tryCatch代替try,更清晰的语法和更多的控制。 – Hansi 2012-01-13 17:53:58

+0

@Hansi:同意'tryCatch'一旦你知道它就更清洁了,虽然需要更长的时间才能理解,所以我认为'try'更适合VBA程序员。 <*ducks*> – 2012-01-13 18:00:50

相关问题