我有一个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
}
答案 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))