-1

以下のこのコードは、1 つのフォルダーで 1 年間、複数のバイナリ (365) ファイルを読み取ってループします。実際、私は長年にわたって多くのフォルダを持っており、1 つのフォルダに 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ディレクトリ構造内のファイルのリストを作成するために使用できます。ツリー全体をトラバースするには に設定し、サブディレクトリを含むファイルの名前を取得するにはに設定recursiveしてください。TRUEfull.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)
  })

datdata.frameデータと関連する時間を含む になります。関数を好きなものに置き換えて、例で機能させるだけです。

于 2012-04-12T17:11:16.463 に答える