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这里请原谅我的格式化
答案 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"