2012-01-13 148 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

相關問題