为 R 中的每个栅格图层选择最大值

Selecting the maximum value for each raster layer in R

我目前正在尝试 select 我拥有的每个栅格图层的最大值。我这样做了:

library(raster)
Model4 <- brick("MaxPrecCCCMACanESM2rcp45.nc", var="onedaymax")
subset<-Model4[[1:90]]
subset

class       : RasterStack 
dimensions  : 64, 128, 8192, 90  (nrow, ncol, ncell, nlayers)
resolution  : 2.8125, 2.789327  (x, y)
extent      : -181.4062, 178.5938, -89.25846, 89.25846  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
names       : X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, ... 

导出每个栅格图层的最大值,我试过这个:

Maxprec <- max(subset, na.rm=TRUE)
Maxprec

class       : RasterLayer 
dimensions  : 64, 128, 8192  (nrow, ncol, ncell)
resolution  : 2.8125, 2.789327  (x, y)
extent      : -181.4062, 178.5938, -89.25846, 89.25846  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
data source : in memory
names       : layer 
values      : 1.690237, 363.9818  (min, max)

但是,我不确定这是否正确select每一层的最大值 - 考虑到显示的最低值(即 1.69),我不确定这是否捕获了最大值?最终,应该只有 90 个最大值(即 90 层每层 1 个最大值)

如有任何帮助,我们将不胜感激!

谢谢,

如果您不确定某些功能是否正常工作,请进行一个小测试。这是三个小栅格,我知道每个栅格的最大值:

> r1 = raster(matrix(1:12, 3,4))
> r2 = raster(matrix(12:23, 3,4))
> r3 = raster(matrix(23:34, 3,4))

如果您愿意,可以将其制成砖块或叠层:

> b = brick(r1,r2,r3)

然后要找到每一层中的最大值,请使用 unstack 创建一个列表,您可以使用任何标准 R "apply" 系列函数对其进行循环。在这种情况下,使用 sapply:

> sapply(unstack(b), function(r){max(values(r))})
[1] 12 23 34

我的三层中的每一层都有最大值。