2016-08-18 71 views
1

我正在使用raster包使用R中的365层栅格砖工作。我想从层索引start:stop变换栅格砖中所有值的像素索引r,c。我已经想通了如何从砖提取这些值:索引栅格砖

year_mask[[start:stop]][r,c] 

...但是当我尝试将值分配给光栅砖的这个子集,通过执行下列说:

year_mask[[start:stop]][r,c] <- NA 

..then我得到以下错误:

Error in v[] <- value : incompatible types (from S4 to logical) in subassignment type fix

如何分配一个值或NA为栅格砖的时空索引有什么想法?

回答

0

这应做到:

year_mask[cellFromRowCol(year_mask,r,c)][start:stop] <- NA 

在这里,我假设rc是标量,和我使用cellFromRowCol获得来自行和列索引的细胞指数。

如果你有rc行和列的索引的向量和你想从那些每行/列对,看?cellFromRowCol,然后执行以下操作:

cinds <- cellFromRowCol(year_mask,r,c) 
year_mask[cinds][1:length(cinds), start:stop] <- NA 

在这两种情况下year_mask[cinds]返回matrix每个索引的单元格的行和所有的图层作为列。随后的索引索引到这个矩阵中。

如果您想要所有rc的组合的单元格,请使用cellFromRowColCombine来获得cinds

希望这会有所帮助。