-1

下面的代码是在一个文件夹中读取和循环通过多个二进制 (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) 
}
4

1 回答 1

0

您需要采取一些步骤:

  • 您可以使用list.files在目录结构中创建文件列表。请务必设置recursiveTRUE以遍历整个树,并设置full.namesTRUE以获取包括子目录在内的文件的名称。
  • 一旦您阅读了此文件列表,我将使用ldplyplyr文件包来获取所有文件。

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

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包含数据和相关时间的。只需将函数替换为您喜欢的任何内容即可使其适用于您的示例。

于 2012-04-12T17:11:16.463 回答