4

我在 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)

我的问题:有没有更简单的不使用循环的解决方案?

4

0 回答 0