如何使用相同的 NA 单元在 terra 中创建新栅格?

How to create a new raster in terra with same NA cells?

我需要通过使用 z <- rast(x, vals = y) 分配值来创建一些新栅格。我希望新栅格 (z) 在与旧栅格 (x) 相同的位置具有 NA 值,但在非 NA 单元格中具有新分配的值 (y)。

创建具有匹配 NA 像素但将新值分配给非 NA 像素的新栅格的最有效方法是什么?

我没有看到任何参数来处理 rast() 的文档中列出的 NA 值,因此我是否需要执行一个两步过程,首先将值分配给所有单元格,然后将 NA 分配给所有单元格从旧栅格转移到新栅格?

在下面的示例中,我希望 s 具有与 r 相同的轮廓,但在非 NA 单元格中具有统一值 10。

f <- system.file("ex/elev.tif", package="terra")
r <- rast(f)
s <- rast(r, vals=10) # This fill all rasters cells, including NAs

这里有四种方法:

library(terra)
f <- system.file("ex/elev.tif", package="terra")
r <- rast(f)

s1 <- classify(r, cbind(-Inf, Inf, 10))
s2 <- init(r, 10) |> mask(r)
s3 <- ifel(is.na(r), NA, 10)
s4 <- r * 0 + 10

我认为方法 1 和 4 是最有效的。