如何读取R中不同文件夹中的多个二进制文件?

时间:2012-04-12 16:49:29

标签: r

下面的代码是在一个文件夹中读取并循环多个二进制(365)文件一年。实际上我有多年的文件夹,一个文件夹中的2000年的365个文件,另一个文件夹中的2001年的365个文件等等。

我的问题是如何从一年到另一年(从一个文件夹到另一个文件夹)循环?

setwd("C:\\PHD\\Climate Data\\Wind\\")
listfile<-dir()
for (i in c(1:365)) {
  conne <- file(listfile[i], "rb")
  file<- readBin(conne, integer(), size=2,  n=360*720, signed=T)
  file<-file-273.15 #
  close(conne)
  to.write = file(paste("C:\\PHD\\Climate Data\\Out\\Temperature_",i,".dat",sep=""),"wb")
  writeBin(file, to.write)
  close(to.write) 
}

1 个答案:

答案 0 :(得分:0)

您需要采取以下步骤:

  • 您可以使用list.files创建目录结构中的文件列表。请务必将recursive设置为TRUE以遍历整个树,并将full.names设置为TRUE以获取包含子目录的文件的名称。
  • 读完这个文件列表后,我会使用ldply格式plyr来获取所有文件。

最后,读取所有数据的(未经测试的伪代码)示例如下所示:

list_of_files = list.files("datadir", recursive = TRUE, full.names = TRUE)
dat = l_ply(list_of_files, function(fname) {
    dum_data = readBin(fname)
    writeBin(dum_data)
  })

dat现在是data.frame,其中包含数据和相关时间。只需将该功能替换为您喜欢的任何功能,即可使其适用于您的示例。