首页 > 解决方案 > 如何通过文件夹创建一个循环以在R中的相应文件夹中写入栅格?

问题描述

我正在尝试对不同的文件夹重复相同的操作。我将多个栅格堆叠和相乘 10 次(对应于我的 10 个文件夹)。我想在dir a中进行操作并在dir a 中写入新的栅格,在dir b中进行操作并在dir b中写入新的栅格等。

setwd("path/")
dir <- list.dirs(recursive=FALSE)

for(j in 1:length(dir)){

writeRaster(stack( list.files(path=dir[j], recursive=TRUE, full.names=TRUE,  pattern='rain'))*2, 
          path=dir[j]),filename=paste(dir[j], "new.tif"), overwrite=TRUE,  bylayer=TRUE )
}

但是,使用上面的代码,文件并没有写入相应的文件夹中。它们都写在setwd定义的路径中。

我是 R 新手,任何帮助将不胜感激。

标签: rloopsdirectoryraster

解决方案


对您的代码稍作修改,它就可以工作。问题在于您指定写入新栅格的名称和路径的方式。

dir <- list.dirs(recursive=FALSE)

for(j in 1:length(dir)){
writeRaster(stack( list.files(path=dir[j], recursive=TRUE, full.names=TRUE, pattern='rain'))*2,
paste0(dir[j],"/",strsplit(dir[j],"/")[[1]][2], "_new.tif"), overwrite=TRUE,  bylayer=TRUE )
    }

推荐阅读