【发布时间】:2016-07-26 14:14:55
【问题描述】:
我希望有人可以帮助我处理我正在使用的循环函数。我尝试过广泛搜索 Google 和 Stack Overflow,但由于我不知道确切的搜索术语,我担心我会遗漏一些结果。考虑到这一点,如果这个问题已经被问到,我提前道歉,但我希望有人能指出我正确的解决方案。
关于我的数据
我已经从 NASA 的 MODIS 卫星下载了 1000 多个文件。由于我的研究区域面积很大,我不得不下载 6 个瓦片区域的数据。结果,我的下载文件列表实际上以 6 个为一组“分组”在一起(尽管在资源管理器中仅显示为文件列表)。
我在 R 中编写了一些简单的 for 循环来进行一些初始处理(在下面的示例中,这是对图块重新采样,以便可以使用 raster::mosaic 将它们缝合在一起。这种处理可以单独发生在文件上在这个阶段,所以我发现下面的循环非常适合我的需求:
resampled.raster<-list()
for (l in 1:24){
cat(l,"\n")
resampled.raster[[l]]<-resample(rst[[l]], s, method="ngb")
}
问题
我的处理的下一个阶段要求我将栅格以 6 个为一组进行镶嵌,然后再进入下一批 6 个。例如,如果我有一个包含 24 个文件的列表,则需要将前 6 个文件处理为一组文件,然后保存(在列表中),然后再移动到下一个 6。经过 4 次迭代(总共 24 个文件),我需要停止循环。
我通过搜索互联网找到的最接近的解决方案是here,但这不是我的问题的解决方案。
在 R 中使用 for 循环是否可以进行这种“批处理”处理?非常感谢您的帮助。
【问题讨论】:
-
我从未使用过
raster,但要选择一个批次,您可以执行以下操作:step <- 6和for(i in seq(1,24,step )),然后在循环内batchIndex <- i:(i+step) -
您可以使用按批次分组的文件名列表制作 .txt 文件
-
感谢两位cmets。以下 RobertH 的解决方案有效,我已接受此答案。