【发布时间】:2016-05-14 03:58:41
【问题描述】:
我正在尝试使用 raster 包中的 calc() 函数从光栅砖对象计算简单的标准偏差函数。我有缺失值并希望将它们排除在外。我想我应该可以通过包含 na.rm=TRUE 参数来排除它们,但是当我这样做时,我会收到一个错误:
Error in .calcTest(x[1:5], fun, na.rm, forcefun, forceapply) :
cannot use this function. Perhaps add '...' or 'na.rm' to the function arguments?
下面我创建了一个简单的示例来演示(注意:我已经为总体编写了自己的标准差函数,因为内置的 sd 函数用于样本标准差。但是,它会引发相同的错误)
r <- raster(nrow=10, ncol=10)
r1 <- setValues(r, 5)
r2 <- setValues(r, 10)
r3 <- setValues(r, 11)
r4 <- setValues(r, NA)
s <- stack(r1, r2,r3,r4)
pop.sd=function(x)(sqrt(var(x)*(length(x)-1)/length(x)))
stdv<-calc(s, fun=pop.sd, na.rm=T)
应返回一个全为 2.624 的栅格图层。有什么想法吗?
【问题讨论】: