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

时间:2015-01-27 11:07:39

标签: r raster

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

1 个答案:

答案 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