我們有一個基本的 tryCatch 將資料幀寫入 Google 表格,如果第一次寫入因任何原因失敗,則會重試:
result = tryCatch({
print('TRYING')
googlesheets4::sheet_write(data = our_df, ss = our_spreadsheet, sheet = 'our_sheetname')
}, error = function(e) {
print('ERROR, TRYING AGAIN')
googlesheets4::sheet_write(data = our_df, ss = our_spreadsheet, sheet = 'our_sheetname')
})
是否可以概括此代碼以重試googlesheets4::sheet_write()N 次嘗試的函式呼叫?是否為此在基本 R 中內置了一些東西,或者是否有一個很好的 R 庫可以處理函式的無限重試?
uj5u.com熱心網友回復:
你可以把它放在這樣的 for 回圈中。
首先,我將定義一個經常失敗的函式(因為我無權訪問您的 Google 表格)。
russian_roulette <- function(n = 6) {
revolver <- sample(1:n, 1)
if (revolver == 1) {
return("You lived")
} else {
stop("Better luck next time...")
}
}
然后你可以在你認為合理的情況下嘗試多次。您可以將我的呼叫替換為russian_roulette()您的呼叫googlesheets4::sheet_write()。
NUM_TRIES <- 10
for (i in 1:NUM_TRIES) {
message(i)
result <- try({
russian_roulette()
})
if (class(result) != "try-error") {
print("Success!")
break
}
}
輸出:
1
Error in russian_roulette() : Better luck next time...
2
Error in russian_roulette() : Better luck next time...
3
Error in russian_roulette() : Better luck next time...
4
Error in russian_roulette() : Better luck next time...
5
Error in russian_roulette() : Better luck next time...
6
[1] "Success!"
result
# [1] "You lived"
我不知道您為什么希望寫入檔案失敗 - 取決于您可能希望Sys.sleep()在每次失敗后在其中添加呼叫一定秒數的原因。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/524549.html
標籤:r试着抓试着抓住最后
上一篇:按組獲取日期最后條件
