如何在 R 中将栅格中的列或行设置为 NA(或其他值)?

How to set column or rows in a raster to NA (or another value) in R?

我有一个栅格,我想将外部行或列设置为 NA(或特定值)。设置第一行和最后一行相当简单,因为我知道第一行和最后一行的单元格编号,因为单元格编号从 1 开始,并随着每行中的列数增加。我知道我的示例栅格的单元格编号(比如 10 列)使用:

ids <- init(exampleraster, v='cell')

然后我可以使用以下方法将第一行设置为 NA:

ids[ids < 11] <- NA

然后我可以将 ids 的值全部设置为 1:

ids[ids > 1] <- 1

然后乘以示例栅格:

newraster <- ids*exampleraster 

但这看起来并不优雅 - 有更好的方法吗?

但是,设置第 1 列和最后一列要棘手得多,因为单元格编号会随着列数的跳跃而增加,即第 1 列第一个单元格的单元格编号是 1,但第二个是倍数列数(例如,如果栅格中有 100 列,则第二个单元格的单元格编号为 101)。如何将特定列设置为 NA?

安东尼,如有任何帮助,我们将不胜感激

假设我们正在谈论一个 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