0
airprobread <- function(id) {
  fi <- list()
  for (i in id) {
    if(i < 10) {
      fi[[i]] <- read.csv(file = paste("00",i,".csv",sep=""))
    } else 
    if((i >= 10) & (i < 100)) {
      fi[[i]] <- read.csv(file=paste("0",i,".csv",sep=""))
    } else 
    if (i >= 100) {
      fi[[i]] <- read.csv(file=paste(i,".csv",sep=""))
    }          
  }

  for (j in id) {
    print(fi[[j]]) 
  }
}
  • I am unable to understand why the concatenation is not happening in the case of paste() function

  • Files from 001.csv to 009.csv and 010.csv to 099.csv not opening. Gives comments like:

    In file(file, "rt") : cannot open file '2.csv': No such file or directory

    In file(file, "rt") : cannot open file '34.csv': No such file or directory

    but it works for values above 100.csv (file opens for 315.csv)

I'm here so pardon me for the formatting.

Melanie Palen
  • 2,645
  • 6
  • 31
  • 50

2 Answers2

1

You could use sprintf and avoid the if-clause to add the leading zeroes:

fi[[i]] <- read.csv(file=sprintf("%03d.csv", i))
mpjdem
  • 1,504
  • 9
  • 14
0

Would this be useful for you?

> paste0(sprintf("%03d",c(1,10,99,100,999,1000)), ".csv")
[1] "001.csv"  "010.csv"  "099.csv"  "100.csv"  "999.csv"  "1000.csv"

mpjdem's answer is better

> sprintf("%03d.csv",c(1,10,99,100,999,1000))
[1] "001.csv"  "010.csv"  "099.csv"  "100.csv"  "999.csv"  "1000.csv"
Jean
  • 1,480
  • 15
  • 27