无法在R中打开.csv文件,其文件名是通过将字符串与变量连接而获得的

时间:2017-01-20 08:32:56

标签: r string string-concatenation

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(i >= 100)
          fi[[i]] <- read.csv(file=paste(i,".csv",sep=""))

      }

  for(j in id){
    print(fi[[j]]) 
    }
}

$我无法理解为什么在paste()函数的情况下没有发生连接

从001.csv到009.csv和010.csv到099.csv的$文件无法打开
 $给出如In file(文件,&#34; rt&#34;)之类的评论:无法打开文件&#39; 2.csv&#39;:没有这样的文件或目录

$提供类似In文件(文件,&#34; rt&#34;)的评论:无法打开文件&#39; 34.csv&#39;:没有这样的文件或目录

$但适用于100以上的值     .csv文件将打开315.csv

$ new这里请原谅我的格式化

2 个答案:

答案 0 :(得分:1)

您可以使用sprintf并避免使用if子句添加前导零:

fi[[i]] <- read.csv(file=sprintf("%03d.csv", i))

答案 1 :(得分:0)

这会对你有用吗?

> 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的答案更好

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