循环遍历两个目录,访问循环外的文件

Loop through two directories and access the files outside the loop

我想同时循环访问两个目录。两个目录都包含光栅图像,一个是初始图像,另一个是这些图像的蒙版。

我想在循环外访问它们,因为我必须做一些计算但还要保留我的文件夹结构。

循环不必相互嵌套,我想,但我如何访问循环外的文件?在外部创建一个空的 stack/raster 并用循环 stack/raster 中的值填充它似乎不是诀窍。

到目前为止我得到了这个:

library(raster)

files1 = list.files(path2, pattern = "*.tif", full.names = TRUE)
files2 = list.files(path4, pattern = "*_cmask.tif", full.names = TRUE)
f1Stack = stack()
for (f1 in files1) {
    f1Stack = stack(f1)
         do stuff with f1Stack
    for (f2 in files2) {
        f2Raster = raster(f2)
        do stuff with f2Raster
    }
 }

编辑:
我想存储在循环内创建的光栅堆栈,以便在外部访问。 files1 包含 10 个多波段 tiff。如果我在循环外创建一个空堆栈,尝试用循环中的当前堆栈更新它,它总是只包含循环的最后一个堆栈。

您可能希望以这种方式开始:

library(raster)
files1 <- list.files(path2, pattern = "\.tif$", full.names = TRUE)
files2 <- list.files(path4, pattern = "_cmask\.tif$", full.names = TRUE)
s1 <- lapply(files1, brick)
s2 <- lapply(files2, brick)

也就是说,创建每个文件的 RasterBrick 对象列表(比 RasterStack 更有效)。你可以操纵列表中的每个对象(循环或另一个 lapply),并且你不会丢失它们。