2013-08-29 75 views
1

我有一个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

我在平均之前使用下面的建议创建了一个堆栈,它工作正常。谢谢。 – user2729279

回答

0

我假设你有rasterLayerlist A S(或者a 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) 
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) 

此外,存在用于Raster*对象mean方法。因此,您并不需要calc

mean(s, na.rm=TRUE)