Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在编辑一组栅格(或矩阵,如果您愿意),它们设置在栅格堆栈(列表)中。我需要将值 -999 更改为 NA。到目前为止,我发现以下代码在每个单独的栅格上运行,是最节省内存的
r[[15]][r[[15]]==-999]<-NA
或者
s=r[[15]] s[s==-999]<-NA gc(reset=T) r[[15]]=s
我正在替换列表中超过 20 个栅格的值,大约 10-15 个我用完了内存。有谁知道更有效的方法?
干杯!
您可以使用calc旨在执行此操作的...
calc
calc( r , function(x) { x[ x == -999 ] <- NA; return(x) } )
它会返回一个rasterStack(或任何输入)。从文档:
rasterStack
calc对于大型对象calc,将逐块计算值。这意味着要使结果fun正确,它不应依赖于一次访问所有值。
fun