更有效的栅格重分类

时间:2019-05-29 14:52:38

标签: r raster

我有一个raster,其中第一列必须重新分类,而所有其他值保留为NA。我已经编写了执行此操作的代码(如下),但是由于栅格大小超出了这个玩具示例的范围,因此效率非常低。

有人可以推荐一种更有效的方式来重写此代码,以便它可以处理更大的光栅文件吗?我怀疑apply()在这里可能有用,但是我不确定将其引入哪个方向。

r<-raster::raster(nrow=10, ncol=10)
r[]<-NA

  for(i in 1:r@nrows){
    r[(r@nrows*i)-(r@ncols-1)]<-2

  }

1 个答案:

答案 0 :(得分:1)

第一种更好的做事方式

library(raster)
r <- raster::raster(nrow=10, ncol=10)
for(i in 1:nrow(r)){
    r[i, 1] <- 2
}

更好的选择

r <- raster::raster(nrow=10, ncol=10)
r[,1] <- 2

但是对于较大的栅格,也许最好这样做

r <- raster::raster(nrow=10, ncol=10)
xy <- cbind(xFromCol(r, 1), yFromRow(r, 1:nrow(r)))
r <- rasterize(xy, r, field=2)

可能效率不高

r <- raster::raster(nrow=10, ncol=10)
r <- init(r, "col")
r <- reclassify(r, rbind(c(1,1,2), c(2,Inf,NA)), right=TRUE, include.lowest=TRUE)

相同的想法,非常简洁

r <- subs(init(r, "col"), data.frame(from=1, to=2))
相关问题