From hb at biostat.ucsf.edu  Mon Jan 31 20:16:59 2011
From: hb at biostat.ucsf.edu (Henrik Bengtsson)
Date: Mon, 31 Jan 2011 11:16:59 -0800
Subject: [Rd] str() on raster objects fails for certain dimensions
Message-ID: <AANLkTimycPK-3_mj5OPd0eLauAh41r2-Wkrp7j2jo1sw@mail.gmail.com>

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



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