[Rd] "[" operator and indexing ambiguity

Bradley Buchsbaum bbuchsbaum at berkeley.edu
Fri Jan 26 16:55:59 CET 2007


Hi,

I am working on writing some S4 classes that represent
multidimensional (brain) image data.  I would like these classes to
support standard array indexing. I have been studying the Matrix and
EBImage (http://www.bioconductor.org/packages/1.9/bioc/html/EBImage.html)
packages to see how this is done.

When using objects of the "array" class directly, R distinguishes
between the calls:

x[i,,] and x[i]

with the former returning a 2D array of values and the latter
returning a single value.  The question I have is whether this same
behavior can be simulated in classes that do not inherit from the
"array" class directly? (See below for a snippet from the EBImage
package which suggests that it cannot).

My guess is that native array indexing is making use of the
information provided by the commas, and this is unavailable to user
implemented class methods?

thanks,

Brad Buchsbaum



# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
setMethod("[", signature(x = "Image", i = "numeric", j = "missing"),
    function(x, i, j, k, ..., drop) {
        if (missing(k)) {
            warning("using index [int], cannot distinguish from
[int,,ANY], use [int,1:dim(x)[2],ANY] otherwise")
            tmp = x at .Data[i, drop = FALSE]
        }
        else {
            tmp = x at .Data[i, , k, drop = FALSE]
        }
        ...
}



More information about the R-devel mailing list