From rdpeng at gmail.com  Sun Apr 25 03:07:51 2010
From: rdpeng at gmail.com (Roger Peng)
Date: Sat, 24 Apr 2010 21:07:51 -0400
Subject: [Rd] S4 Inheritance of environments
In-Reply-To: <g2j5832a2d11004241015u7087d1ecye95136b7b178b236@mail.gmail.com>
References: <g2j5832a2d11004241015u7087d1ecye95136b7b178b236@mail.gmail.com>
Message-ID: <y2t66f3bd911004241807mbc1342a2k564466de5ee942b8@mail.gmail.com>

I think using 'is(inEnv, "environment")' produces the answer you
expect. Can't explain the other anomalies though.

-roger

On Sat, Apr 24, 2010 at 1:15 PM, Christopher Brown
<cbrown at opendatagroup.com> wrote:
> 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
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



-- 
Roger D. Peng  |  http://www.biostat.jhsph.edu/~rpeng/



[Rd] S4 Inheritance of environments
Roger Peng