1

我正在编辑一组栅格(或矩阵,如果您愿意),它们设置在栅格堆栈(列表)中。我需要将值 -999 更改为 NA。到目前为止,我发现以下代码在每个单独的栅格上运行,是最节省内存的

r[[15]][r[[15]]==-999]<-NA

或者

s=r[[15]]
s[s==-999]<-NA
gc(reset=T)
r[[15]]=s

我正在替换列表中超过 20 个栅格的值,大约 10-15 个我用完了内存。有谁知道更有效的方法?

干杯!

4

1 回答 1

2

您可以使用calc旨在执行此操作的...

calc( r , function(x) { x[ x == -999 ] <- NA; return(x) } )

它会返回一个rasterStack(或任何输入)。从文档:

calc对于大型对象calc,将逐块计算值。这意味着要使结果fun正确,它不应依赖于一次访问所有值。

于 2013-11-07T10:01:01.430 回答