我正在编辑一组在rasterstack(列表)中设置的栅格(或矩阵,如果你愿意)。我需要将值-999更改为NA。到目前为止,我发现以下代码(我在每个单独的栅格上运行)是最有效的内存
r[[15]][r[[15]]==-999]<-NA
或
s=r[[15]]
s[s==-999]<-NA
gc(reset=T)
r[[15]]=s
我正在替换列表中超过20个栅格的值,大约10-15个内存耗尽。有谁知道更有效的方式?
干杯!
答案 0 :(得分:2)
您可以使用旨在执行此操作的calc
...
calc( r , function(x) { x[ x == -999 ] <- NA; return(x) } )
它将返回rasterStack
(或输入的任何内容)。来自文档:
calc
对于大型对象calc
将按块计算值块。这意味着,为了使fun
的结果更正,它不应该依赖于一次访问所有值。