我想使用循环修改某些栅格。
rasters<-list(rast1,rast2,rast3,rast4)
for(i in rasters){
i[[1]]<-i[[1]]/10000
i[[2]]<-(i[[2]]+100)/9000
}
当前,i
成为大的栅格对象。
这里是一个示例栅格堆栈,可用于测试
library(raster)
rast1<-stack(raster(matrix(runif(100),
ncol = 10, byrow = TRUE)),
raster(matrix(runif(100),
ncol = 10, byrow = TRUE)))
我不确定这是否能正确解决您的所有目标,但是我发现您现在的工作存在基本缺陷。在R中构建for()循环时,您可能需要遍历索引值而不是对象对象的索引。对i [[1]]进行赋值时,是(a)不更改栅格对象内任何东西的值,并且(b)更改了迭代器i
的值和类。
所以也许
这将更接近您的尝试(尽管您实际上并未描述定义明确的过程):rasters<-list(rast1,rast1) for(i in seq_along(rasters) ) { rasters[[i]][1]<-rasters[[i]][1]/10000 rasters[[i]][2]<-(rasters[[i]][2]+100)/9000 }
[这将导致
rasters
的值具有与原始rasters
对象相同的大小和形状,即两个栅格堆栈的列表。