我有一个栅格,我想将外部行或列设置为NA(或特定值)。设置第1行和最后一行是相当简单的,因为我知道第1行和最后一行的单元格编号,因为单元格编号从1开始,并随着每行中的列数增加。我知道我的示例栅格(例如10列)的单元格编号使用:
ids <- init(exampleraster, v='cell')
然后我可以使用以下方法将第1行设置为NA:
ids[ids < 11] <- NA
然后我可以将ids all的值设置为1:
ids[ids > 1] <- 1
然后乘以示例栅格:
newraster <- ids*exampleraster
然而,这看起来不那么优雅 - 有更好的方法吗?
然而,设置第1列和最后一列更加棘手,因为列数跳跃时单元格数增加,即第1列中第1个单元格的单元格数为1,但第二列是数字的倍数列数(例如,如果栅格中有100列,则第二个单元格的单元格数为101)。如何将特定列设置为NA?
任何帮助将不胜感激,Antony
答案 0 :(得分:2)
假设我们正在讨论raster
对象,那么:
library(raster)
r <- raster(matrix(runif(100), 10))
r[c(cellFromRow(r, c(1, nrow(r))),
cellFromCol(r, c(1, ncol(r))))] <- NA
正如我在下面的评论中所提到的,您也可以将栅格子集化为矩阵,这包括使用矩阵对进行子集化。以下内容可能比上述方法更快:
r[as.matrix(rbind(expand.grid(c(1, nrow(r)), seq_len(ncol(r))),
expand.grid(seq_len(nrow(r)), c(1, ncol(r)))))] <- NA