[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