Home > Software design >  Create a series of new folders in for loop in R
Create a series of new folders in for loop in R

Time:05-25

I have create a small script that passes a vector through a loop. In this loop I am using an if else statement to check if folder exists and if not to create the folder. However, I am getting error: Error in file.exists(i) : invalid 'file' argument. This has to due with file.exist(). I dont understand why this isnt ok. I check the man using help. Seems like this should be working.

folders<- c("RawData", "Output", "BCV", "DEplots", "DEtables", "PathwayOuts", "VolcanoPLots")

for(i in 1:length(folders)){
   if (file.exists(i)){
      cat(paste0(i, "already exists"))
   } else {
      cat(paste0(i, "does not exists"))
      dir.create(i)
   }
}

CodePudding user response:

You are looping over an index (that is, 1:length(folders) is just the vector 1:7, not the values of the folders vector itself. The easiest solution is to loop over the vector itself:

for (i in folders) {

Or, if you still want to loop over the index:

for (i in 1:length(folders)) {
    if (file.exists(folders[i])){
      cat(paste0(folders[i], "already exists"))
    }
    else {
      cat(paste0(folders[i], "does not exists"))
      dir.create(folders[i])
    }
}

A quick tip: if you are debugging a for-loop, the place to start is to add print(i) at the start of the loop. You would have immediately seen the problem: i was an integer, not the first value of the vector.

  • Related