我在 R 工作。我有一个栅格 (raster_entrop)。我想自动生成这个栅格的随机子集。问题是它的范围不是矩形,我希望子集完全包含在范围内。我的解决方案是检查在原始栅格范围内随机选择的“子范围”坐标中是否没有“NaN”(对应于 raster_entrop 范围之外的像素)。
ext<-extent(raster_entrop)
repeat{
rnd.x<-runif(1,ext@xmin, ext@xmax)
rnd.y<-runif(1,ext@ymin, ext@ymax)
#Test if the sub extent is completely within the "big extent"
test<-is.na(extract(raster_entrop, cbind(rnd.x,rnd.y)))+
is.na(extract(raster_entrop, cbind(rnd.x,rnd.y+0.02)))+
is.na(extract(raster_entrop, cbind(rnd.x+(0.02),rnd.y)))+
is.na(extract(raster_entrop, cbind(rnd.x+(0.02),rnd.y+0.02)))
if (test==0){
break
}
}
ext_sub<-extent(c(rnd.x, rnd.x+0.02,rnd.y,rnd.y+0.02))
raster_entrop_sub <- crop(raster_entrop, ext_sub)
我的问题:有没有更简单的不使用循环的解决方案?