设置 SpatRaster 层的值

Setting values of layer of SpatRaster

我有一个 12 层的栅格,每个月一个。我想设置某些单元格的值(我已经获得了它们的 ID),但我只想在一层上设置这些值。

这是一个光栅

test_raster <- rast(vals= 0,
                    nrows=1500,
                    ncols=2000,
                    xmin=xmin,
                    xmax=xmax,
                    ymin=ymin,
                    ymax=ymax,
                    nlyrs= 12,
                    names = tolower(month.abb),
                    crs="+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=446.448,-125.157,542.06,0.15,0.247,0.842,-20.489 +units=m +no_defs ")

这是我要执行 replacement/assignment 的单元格的 ID 以及我想用

替换它们的值
cells_to_replace_values <- c(1:300)
values_for_replacement <- sample(1:300,300)

我可以轻松成功地替换每一层中的值

> test_raster[cells_to_replace_values] <- values_for_replacement
> test_raster
class       : SpatRaster 
dimensions  : 1500, 2000, 12  (nrow, ncol, nlyr)
resolution  : 100, 100  (x, y)
extent      : 350000, 550000, 250000, 4e+05  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=446.448,-125.157,542.06,0.15,0.247,0.842,-20.489 +units=m +no_defs 
source      : memory 
names       : jan, feb, mar, apr, may, jun, ... 
min values  :   0,   0,   0,   0,   0,   0, ... 
max values  : 300, 300, 300, 300, 300, 300, ...

但我只想分配给一个月,一月。我尝试了 2 种方法,但出现了这些错误:

尝试 1

> test_raster[cells_to_replace_values]["jan"] <- values_for_replacement
Error: [setValues] values must be numeric, integer, logical, factor or character

尝试 2

>subset(test_raster,1)[cells_to_replace_values] <- values_for_replacement
Error in subset(test_raster, 1)[cells_to_replace_values] <- values_for_replacement : 
could not find function "subset<-"

有人可以建议我该怎么做吗?谢谢!

我最终找到了能够执行此操作的正确配置:

test_raster[["jan"]][cells_to_replace_values] <- values_for_replacement

图层名称必须在 [[ ]] 中,然后是单元格 ID