矩阵/栅格中的内存有效值替换

时间:2013-11-07 09:34:16

标签: r memory matrix replace raster

我正在编辑一组在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个内存耗尽。有谁知道更有效的方式?

干杯!

1 个答案:

答案 0 :(得分:2)

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

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

它将返回rasterStack(或输入的任何内容)。来自文档:

  

calc 对于大型对象calc将按块计算值块。这意味着,为了使fun的结果更正,它不应该依赖于一次访问所有值。