我有一个大的RasterBrick
对象,其中包含一个时间序列的栅格图层,表示每个时间间隔(不规则)的生物量。我需要的是两个连续时间段(difference in biomass = current biomass layer - last weeks biomass layer
)之间生物量差异的时间序列。
我的想法是使用循环或其中一个应用函数来遍历RasterBrick
,并且对于每个RasterLayer
,将减法函数应用于时间序列中较早的函数。订购RasterBrick
因此实际时间戳不一定重要。我试图找到例子但未能取得进展。任何指针都会非常感激。
我提供了以下情况的简要示例:
library(raster)
随机设置10个栅格图层,放入RasterStack
r <- raster(ncol=10, nrow=10)
;b <- brick( sapply(1:10, function(i) setValues(r, rnorm(ncell(r), i, 3))))
现在我需要一个RasterBrick
包含9个图层,结果为
生物量的差异=当前的生物量层 - 最后几周的生物量层。
答案 0 :(得分:3)
这应该这样做。
subset(r, 2:nlayers(r)) - subset(r, 1:(nlayers(r)-1))
通常情况下,通常的Ops只适用于栅格对象,因此我们可以使用高级工具简单地构建正确的对象。
根据数据值和数量,可能需要其他方法。