The problem is a combination of a class union definition that includes a 
basic type as a member, and is not in a package.

Class "numeric" is sealed, so at present setClassUnion() doesn't cache 
the new superclass in the definition of "numeric".  In 2.4.0 that 
happens when a package is attached (before, it didn't happen at all).  
It's _probably_ true that the caching should take place in 
setClassUnion(), but that needs a little consideration.

Meanwhile the workaround is to call cacheMetaData(1) to cache the 
information in the global environment--that's what happens when a 
corresponding package is attached.

 > setClassUnion("index", c("numeric", "character", "logical"))
[1] "index"
 > cacheMetaData(1)
 > extends("numeric")
[1] "numeric"   "vector"    "index"


Parlamis Franklin wrote:
> the code below has me confused:
>
>       setClassUnion("index", c("numeric", "character", "logical"))
>       extends("numeric") # i don't see the class union
>       library(Matrix)
>       extends("numeric") # now i see the class union
>
> i am aware that the "Matrix" package separately defines the "index"  
> class union.
> is it the case that class definitions need to occur in packages?
>
> i am also having trouble dispatching on class unions defined in the  
> global environment,
> which may just be the same problem.
Yes.  You need to cacheMetaData(1) before calling foo(2).
>  see code below:
>
>       setClassUnion("numORchar", c("numeric", "character"))
>       foo <- function(x) "Default"
>       setMethod("foo", signature(x = "numORchar"),
>               function(x) "numORchar")
>       foo(2) # gives the default method
>
> franklin
>
>  > version
>                 _
> platform       powerpc-apple-darwin8.7.0
> arch           powerpc
> os             darwin8.7.0
> system         powerpc, darwin8.7.0
> status
> major          2
> minor          4.0
> year           2006
> month          10
> day            03
> svn rev        39566
> language       R
> version.string R version 2.4.0 (2006-10-03)
>
> ______________________________________________
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to