【发布时间】:2018-07-20 22:57:58
【问题描述】:
在 R 中,我循环浏览一个文件夹并将 netCDF 文件加载到光栅堆栈中。然后我进行计算并将结果作为多波段 tiff 保存到不同目录中的另一个文件夹中。
问题是,我有几个文件夹,里面有几个 netCDF 文件,我想让代码更有效率。 1.) 遍历目录中的子文件夹并加载 cetCDF 文件 2.) 遍历输出目录中的子文件夹并将结果保存到光盘
什么是执行此操作的有效方法?也许是一个功能? 我想它并没有那么复杂,但是我对太多的 for 循环有点困惑......
我附上了我现在所做的工作示例。
files<- list.files(path= paste(wd,"/nc_in/tmax_rcp85/", sep=""), pattern = 'nc$', full.names=TRUE)
# loop through netCDF files and create a raster stack
for (i in 1:length(files)){
ras<- stack(files[i])
print(ras)
outnam<- basename(files[[i]]) # generate output name
outnam<- sub('\\.nc$', '', outnam)
results<- stack() # create temp stack of results
#loop through raster stack and downscale monthly mean averages
for (r in 1:nlayers(ras)){
# doing some stuff with each raster in the satck
# update results temp raster stack
results <- stack(results, downscale)
}
# save downscaled rster stack to disc
writeRaster(results, file=paste0(getwd(),"/ds_results/tmax_rcp85_ds/",sub('\\.nc$', '', outnam),"_ds",".tif", sep = ""), options="INTERLEAVE=BAND", overwrite=TRUE)
rm(results) # clear temp stack of results
}
removeTmpFiles(0.1)
【问题讨论】:
标签: r loops subdirectory