[Rd] "[" operator and indexing ambiguity

From: Bradley Buchsbaum <bbuchsbaum_at_berkeley.edu>
Date: Fri 26 Jan 2007 - 15:55:59 GMT


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@.Data[i, drop = FALSE]

}
else { tmp = x@.Data[i, , k, drop = FALSE]
}
...

}

R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Sat Jan 27 02:59:16 2007

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Fri 26 Jan 2007 - 19:32:53 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.