我使用raster
包在R中使用365层的光栅砖。我想从图层索引r,c
转换栅格块中的所有值以获取像素索引start:stop
。我已经弄清楚如何从砖块中提取这些值:
year_mask[[start:stop]][r,c]
...但是当我尝试为光栅砖的这个子集分配一个值时,请执行以下操作:
year_mask[[start:stop]][r,c] <- NA
..然后我收到以下错误:
Error in v[] <- value :
incompatible types (from S4 to logical) in subassignment type fix
有关如何将值或NA分配给栅格砖的时空索引的想法吗?
答案 0 :(得分:0)
这应该这样做:
year_mask[cellFromRowCol(year_mask,r,c)][start:stop] <- NA
在这里,我假设r
和c
是标量,我正在使用cellFromRowCol
从行和列索引中获取单元格索引。
如果您有r
和c
作为行和列索引的向量,并且您希望每行/列对,请参阅?cellFromRowCol
,然后执行以下操作:
cinds <- cellFromRowCol(year_mask,r,c)
year_mask[cinds][1:length(cinds), start:stop] <- NA
在这两种情况下,year_mask[cinds]
都会返回一个matrix
,其中每个单元格的行都已编入索引,所有图层都列为列。后续索引将索引到此矩阵中。
如果您需要r
和c
的所有组合中的单元格,请使用cellFromRowColCombine
获取cinds
。
希望这有帮助。