我正在使用R“栅格”程序包并具有较大的栅格图层(62460098单元,12 MB用于该对象)。我的单元格值范围从-1到1.我必须用0替换所有负值(例如:值为-1的单元格必须变为0)。我试图做到这一点:R - 在大栅格图层中查找特定单元格值
raster[raster < 0] <- 0
但它保持超载我的RAM因为光栅尺寸。
操作系统:Windows 7 64位
RAM容量:8GB
韩国社交协会!
我正在使用R“栅格”程序包并具有较大的栅格图层(62460098单元,12 MB用于该对象)。我的单元格值范围从-1到1.我必须用0替换所有负值(例如:值为-1的单元格必须变为0)。我试图做到这一点:R - 在大栅格图层中查找特定单元格值
raster[raster < 0] <- 0
但它保持超载我的RAM因为光栅尺寸。
操作系统:Windows 7 64位
RAM容量:8GB
韩国社交协会!
有several postings that discuss memory issue s,目前还不清楚你是否尝试过这些,但你应该。物理约束不清楚,所以你应该编辑你的问题,包括机器的大小和被折磨的操作系统的名称。我不知道如何构建一个可以让我做任何测试的玩具箱,但是一种方法可能不会破坏RAM的使用(尽可能多),将首先构建一组标记位置的索引以“归零” :
idxs <- which(raster <0, arr.ind=TRUE)
gc() # may not be necessary
然后递增地替换一部分位置,例如一次四分之一或十分之一。
raster[ idxs[ 1:(nrow(idxs)/10), ] ] <- 0
任何这样做的可能的问题是R的方式来更换不“到位”,而是涉及到的,然后将其重新分配给原来的对象的临时副本的创建。祝你好运。
你可以做
r <- reclassify(raster, c(-Inf, 0, 0))
这将在任何尺寸(无内存限制)
韩国社交协会,任务完成的光栅工作。对于问题提示,为了清楚说明机器和对象的约束,它已被编辑。 – IGr14