Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
光栅对象上的R循环_R_For Loop_Gis_Lapply_Raster - Fatal编程技术网

光栅对象上的R循环

光栅对象上的R循环,r,for-loop,gis,lapply,raster,R,For Loop,Gis,Lapply,Raster,我想使用循环修改一些光栅 rasters<-list(rast1,rast2,rast3,rast4) for(i in rasters){ i[[1]]<-i[[1]]/10000 i[[2]]<-(i[[2]]+100)/9000 } 我不确定这是否能恰当地解决你的所有目标,但我看到你现在所做的有一个基本缺陷。在R中构建for()循环时,可能需要迭代索引值,而不是索引对象组件。当您对i[[1]]进行赋值时,它(a)不会更改rasters对象中任何内容的值,并且(

我想使用循环修改一些光栅

rasters<-list(rast1,rast2,rast3,rast4)

for(i in rasters){
  i[[1]]<-i[[1]]/10000
  i[[2]]<-(i[[2]]+100)/9000
}

我不确定这是否能恰当地解决你的所有目标,但我看到你现在所做的有一个基本缺陷。在R中构建for()循环时,可能需要迭代索引值,而不是索引对象组件。当您对i[[1]]进行赋值时,它(a)不会更改rasters对象中任何内容的值,并且(b)它会更改迭代器的值和类,
i

因此,这可能更接近您所尝试的(尽管您确实没有描述一个定义良好的流程):


光栅不确定(而且我不是光栅专家)。为什么不提供构建一组小光栅的代码(从
library
调用加载任何需要的非基本包开始),然后进行测试和演示。我的猜测是,将
[[
与光栅一起使用将不会成功。代码也是如此。我不知道您希望如何修改光栅的值,但这不是您访问值的方式。您需要使用嵌入函数。getValues(光栅)访问您的值和值(光栅)另外,如果你想编辑一个列表,你可能会更习惯于使用lappy。如果你能更好地解释一下你想对数据进行什么样的编辑,我们可以给出一个工作示例。你想只编辑你的所有值吗?嗨,我希望修改光栅堆栈的各个波段。波段1的范围从0到10000,所以到ch将范围从0到1除以10000。我的符号在for循环外部有效,但如果使用迭代器
I
,则在内部无效。很遗憾,您的符号无效,但感谢您的反馈。
library(raster)

rast1<-stack(raster(matrix(runif(100),
                           ncol = 10, byrow = TRUE)),
             raster(matrix(runif(100),
                           ncol = 10, byrow = TRUE)))
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
}