我有一个包含100个栅格图层的矩阵,我想创建一个平均值的新图层。我知道如果有两层我可以简单地使用叠加功能,或者只是使用c <- mean (a, b)
。但是,我不知道如何继续使用矩阵。
以下是矩阵的样本:
[[1]]
class : RasterLayer
dimensions : 175, 179, 31325 (nrow, ncol, ncell)
resolution : 1, 1 (x, y)
extent : 0, 179, 0, 175 (xmin, xmax, ymin, ymax)
coord. ref. : NA
data source : in memory
names : layer
values : 0, 100 (min, max)
我试过了
a.avg <- mean (a.total[,])
我收到错误argument is not numeric or logical: returning NA
答案 0 :(得分:0)
我假设你有list
rasterLayer
s(或者stack
)。如果您已经有stack
,请跳过第一步,但我认为您有一个list
而不是matrix
我称之为mylistofrasters
...
#1 - Get all rasters in the list into a stack
mystack <- do.call( stack , mylistofrasters )
#2 - Take mean of each pixel in the stack returning a single raster that is the average
mean.stack <- calc( mystack , mean , na.rm = TRUE )
答案 1 :(得分:0)
这个答案类似于@ SimonO101使用更简单代码的答案。
首先,让我们构建一个RasterLayer
列表(如果您已有列表,可以跳过此步骤):
library(raster)
r <- raster(nrow=10, ncol=10)
r <- init(r, runif)
lr <- lapply(1:8, function(i)r)
raster
包定义了列表的stack
方法,因此您可以在没有do.call
的情况下直接使用它:
s <- stack(lr)
此外,mean
个对象有一个Raster*
方法。因此,您实际上并不需要calc
:
mean(s, na.rm=TRUE)