如果一个语句出错,我怎么能简单地告诉R重试几次呢?我希望做些什么,比如:

tryCatch(dbGetQuery(...),           # Query database
    error = function(e) {
        if (is.locking.error(e))    # If database is momentarily locked
            retry(times = 3)        # retry dbGetQuery(...) 3 more times
        else {
            # Handle other errors
        }
    }
)

最佳答案

我通常把try块放在一个循环中,
当它不再失败或达到最大尝试次数时退出循环。

some_function_that_may_fail <- function() {
  if( runif(1) < .5 ) stop()
  return(1)
}

r <- NULL
attempt <- 1
while( is.null(r) && attempt <= 3 ) {
  attempt <- attempt + 1
  try(
    r <- some_function_that_may_fail()
  )
}

关于r - 如何重试错误声明?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55499003/

10-12 01:10