[Rd] S4 Inheritance of environments
Christopher Brown
cbrown at opendatagroup.com
Sat Apr 24 19:15:15 CEST 2010
I looked through the documentation and the mailing lists and could not
find an answer to this. My apologies if it has already been answered.
If it has, a pointer to the relevant discussion would be greatly
appreciated.
Creating S4 classes containing environments exhibits unexpected
behavior/features. These have a different in two ways:
1) slotName for the data: ".xData" instead of ".Data" and do not respond to the
2) Response to the is.* function seems to indicate that the object
does not know of its inheritance. ( Notably, the inherits function
works as expected. )
Here is a working illustration:
> # LIST
> setClass( 'inheritList', contains='list')
[1] "inheritList"
> inList <- new( 'inheritList' )
> class( inList )
[1] "inheritList"
attr(,"package")
[1] ".GlobalEnv"
> is.list( inList ) # TRUE
[1] TRUE
> slotNames(inList) # ".Data"
[1] ".Data"
> inherits(inList, 'list' ) # TRUE
[1] TRUE
>
>
> # ENVIRONMENT
> setClass( 'inheritEnv', contains='environment' )
Defining type "environment" as a superclass via class ".environment"
[1] "inheritEnv"
> inEnv <- new( 'inheritEnv' )
> class(inEnv)
[1] "inheritEnv"
attr(,"package")
[1] ".GlobalEnv"
> is.environment(inEnv) # FALSE
[1] FALSE
> slotNames(inEnv) # ".xData"
[1] ".xData"
> inherits(inEnv, 'environment' ) # TRUE
[1] TRUE
My questions is whether this behavior is a bug? By design? A work
around? Etc.?
Thanks kindly for your reply,
Chris
the Open Data Group
http://www.opendatagroup.com
http://blog.opendatagroup.com
More information about the R-devel
mailing list