如何在 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
我有一个栅格,我想将外部行或列设置为 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