【发布时间】:2015-02-13 11:52:51
【问题描述】:
我有一个大的光栅层,整数范围从 0 到 44。
class : RasterLayer
dimensions : 29800, 34470, 1027206000 (nrow, ncol, ncell)
resolution : 10, 10 (x, y)
extent : 331300, 676000, 5681995, 5979995 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs
data source : /home/mkoehler/stk_rast_whz
names : stk_rast_whz
values : 0, 44 (min, max)
我想对每层 5000 个点进行分层抽样。 我收到以下错误:
POINTS<-sampleStratified(b, size=5000, na.rm=T, xy=F)
(Error in ys[[i]] <- y : attempt to select less than one element)
这是重现问题的代码(即使只选择 1 每层项目):
set.seed(10)
r <- raster(ncol=5000, nrow=5000)
names(r) <- 'stratum'
r[] <- round((runif(ncell(r)))*44)
sampleStratified(r, size=1,xy=T)
Error in ys[[i]] <- y : attempt to select less than one element
尝试使用更少的层并更改“大小”的设置或 “exp”没有效果。 R 版本:[64 位] C:\Program Files\R\R-3.1.1
有什么想法吗?
提前致谢!
【问题讨论】:
-
您的示例代码对我来说运行良好(R 3.1.0,32 位)
-
奇怪!这是否取决于我使用的 R 版本/库版本?
-
可能是。检查
raster包的版本。我正在使用 2.2-31。 -
@koekenbakker 我的光栅版本是 raster_2.3-12 我使用相同版本的同事收到相同的错误消息。我会用旧版本试一试。
-
是的,这是个好主意。您也可以尝试旧版本的代码here。也许您可以通过逐步运行代码并检查每个步骤的输出来进行调试。