ugur
ugur

Reputation: 386

How to prevent R from stopping when it can't find the file to open?

My R code is trying to open a RDS file in a for loop as follows:

for(i in 1:run_loops){
    source("./scripts/load_data.R")
    model <- readRDS(file=paste(model_directory,"/",modelname,".Rds", sep="")) #STOPS-HERE!!!
    source("./scripts/prediction.R")
  }

R stops when there is no model file.
How do I get it to move to the next iteration instead of stopping?

P.S. modelname variable changes each time load_data.R is sourced.

Upvotes: 0

Views: 364

Answers (2)

Steffen
Steffen

Reputation: 196

This should do the trick:

for(i in 1:run_loops) {
  tryCatch(
    expr = {
      source("./scripts/load_data.R")
      model <-
        readRDS(file = paste(model_directory, "/", modelname, ".Rds", sep = "")) #STOPS-HERE!!!
      source("./scripts/prediction.R")
    },
    error = function(e) {
      print(paste0(i, ' not done'))
    }
  )
}

Upvotes: 2

Ronak Shah
Ronak Shah

Reputation: 389275

You can use file.exists

file_name <- paste0(model_directory,"/",modelname,".Rds")
if(file.exists(file_name)) {
  #do something
} else {
  #do something else
}

Upvotes: 1

Related Questions