[Rd] R2.6 bug in arithmetics of S4 classes inherited from 'array', or intended behavior?

Oleg Sklyar osklyar at ebi.ac.uk
Mon Jul 23 11:02:16 CEST 2007


Hi,

I have an S4 class directly derived from 'array' as shown in the code
below (EBImage package of Bioconductor 2.1, devel), it simply contains
array adding a couple of slots:

setClass ("Image",
  representation (colormode="integer", filename="character", 
    compression="character", resolution="numeric", features="list"
  ),
  prototype (colormode= Grayscale, filename="no-name",
compression="JPEG",
    resolution=c(2.5e+6, 2.5e+6), features=list()
  ),
  contains = "array"
)

No mathematical/arithmetical routines have been redefined for the class
and this is what I was getting since R2.0, sum of two objects of class
Image is Image again:

version.string R version 2.5.1 (2007-06-27):
> library(EBImage)
> a <- Image(0, c(2,2))
> class(a+a)
[1] "Image"
attr(,"package")
[1] "EBImage"

The same stands for 

version.string R version 2.6.0 Under development (unstable) (2007-07-11
r42199)
> library(EBImage)
> a <- Image(0, c(2,2))
> class(a+a)
[1] "Image"
attr(,"package")
[1] "EBImage"

Now, in the yesterday's revision of R2.6 I get the following:

version.string R version 2.6.0 Under development (unstable) (2007-07-21
r42284)

> library(EBImage)
> a <- Image(0, c(2,2))
> class(a+a)
[1] "array"

Is this the intended behavior to fall back to the base class (same for
*,/,-)? If yes, could someone point me to the following two things: what
are the reasons behind and WHAT operators and functions have been
affected -- I will need to redefine all those then. Moreover, it is not
consistent:

> class(a*2)
[1] "Image"
attr(,"package")
[1] "EBImage"
> class(2*a)
[1] "Image"
attr(,"package")
[1] "EBImage"


Unfortunately, I do not have R versions installed between revisions
42199 and 42284, so I cannot narrow down to the particular revision. 

Thanks in advance,
Oleg

-- 
Dr. Oleg Sklyar * EBI-EMBL, Cambridge CB10 1SD, UK * +441223493366



More information about the R-devel mailing list