[Rd] str() on raster objects fails for certain dimensions

Henrik Bengtsson hb at biostat.ucsf.edu
Mon Jan 31 20:16:59 CET 2011


Hi,

str() on raster objects fails for certain dimensions.  For example:

> str(as.raster(0, nrow=1, ncol=100))
 'raster' chr [1, 1:100] "#000000" "#000000" "#000000" "#000000" ...

> str(as.raster(0, nrow=1, ncol=101))
Error in `[.raster`(object, seq_len(max.len)) : subscript out of bounds

This seems to do with how str() and "[.raster"() is coded; when
subsetting as a vector, which str() relies on, "[.raster"() still
returns a matrix-like object, e.g.

> img <- as.raster(1:25, max=25, nrow=5, ncol=5);
> img[1:2]
     [,1]      [,2]      [,3]      [,4]      [,5]
[1,] "#0A0A0A" "#3D3D3D" "#707070" "#A3A3A3" "#D6D6D6"
[2,] "#141414" "#474747" "#7A7A7A" "#ADADAD" "#E0E0E0"

compare with:

> as.matrix(img)[1:2]
[1] "#0A0A0A" "#3D3D3D"


The easy but incomplete fix is to do:

str.raster <- function(object, ...) {
  str(as.matrix(object), ...);
}

Other suggestions?


> sessionInfo()
R version 2.13.0 Under development (unstable) (2011-01-27 r54129)
Platform: x86_64-pc-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

loaded via a namespace (and not attached):

/Henrik



More information about the R-devel mailing list