下面的代码是在一个文件夹中读取并循环多个二进制(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)
}
答案 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
,其中包含数据和相关时间。只需将该功能替换为您喜欢的任何功能,即可使其适用于您的示例。