R Script - How to Continue Code Execution on Error

Solution 1:

Use try or 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
    next
  }
  #rest of iteration for case of no error
}

The modern way to do this uses purrr::possibly.

First, write a function that gets your data, get_data().

Then modify the function to return a default value in the case of an error.

get_data2 <- possibly(get_data, otherwise = NA)

Now call the modified function in the loop.

for(i in something) {
  res <- get_data2(i)
}

Solution 2:

You can use try:

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

Solution 3:

How about these solutions on this related question :

Is there a way to `source()` and continue after an error?

Either parse(file = "script.R") followed by a loop'd try(eval()) on each expression in the result.

Or the evaluate package.