如何通过创建函数读取多个CSV文件

时间:2014-01-19 10:33:21

标签: r file function file-io

如何编写一个读取多个csv文件的函数,其中许多文件以00开头,例如001.csv002.csv003.csv等等。

我的代码是:

getmonitor <- function(id, directory, summarize = FALSE) {

  filename <- list.files(pattern="specdata/.csv")

  data <- read.csv( paste(directory,"/",id,".csv",sep="") )
  return (data) 
}

如果输入:

,则有效
getmonitor(100, "specdata")

但如果我输入:

getmonitor(001, "specdata")

它将返回:

Error in file(file, "rt") : cannot open the connection

另外:警告信息:

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

如何让我的函数读取以csv开头的00个文件?

2 个答案:

答案 0 :(得分:3)

您可以使用sprintf格式化这样的数字:

> sprintf('%03d',12)
[1] "012"

答案 1 :(得分:0)

您可以使用sprintf作为@Andrey Shabalin建议或作为替代方案,您可以像这样使用formatC:

id <-1
formatC(id, width=4, flag="0")
[1] "0001"

在您的功能中,您必须在读入文件之前放置此行:

id <- formatC(id, width=4, flag="0")

希望这有帮助。