[Rd] Reissue: Base "Object" class to use in S4 slot specification

Simon Urbanek simon.urbanek at r-project.org
Tue Sep 8 18:44:15 CEST 2009


On Sep 8, 2009, at 12:39 , Simon Urbanek wrote:

>
> On Sep 8, 2009, at 12:14 , Patrick Aboyoun wrote:
>
>> This is a reissue of a question I had asked a few weeks ago to see  
>> if anyone had any thoughts on the matter.
>>
>> I am looking to have slot in an S4 class definition that can take  
>> any (S3 or S4) object. The ANY class seemed to be a good candidate,  
>> but the is() function definition performs an S3Case test before  
>> checking if methods:::.identC(class2, "ANY"). The result is the  
>> is() function does not consider various S3 objects to be of class  
>> ANY.
>>
>
> Yes, but how is that relevant to your question? A slot defined as  
> "ANY" will accept any type in R:
>
> > setClass("foo",representation(a="ANY"))
> [1] "foo"
> > new("foo",a=factor())
> An object of class "foo"
> Slot "a":
> factor(0)
> Levels:
>
> "ANY" is not an S4 class (and neither are various other types in R),  
> so is() correctly returns FALSE.
>

Ok, sorry, the last sentence is false -  "ANY" is a virtual S4 class,  
so it will return TRUE for S4 classes and FALSE for any other object.

Cheers,
Simon


>
>
>> > is(factor(), "ANY")
>> [1] FALSE
>> > is(lm(I(1:10) ~ rnorm(10)), "ANY")
>> [1] FALSE
>> > sessionInfo()
>> R version 2.10.0 Under development (unstable) (2009-09-07 r49613)
>> i386-apple-darwin9.8.0
>>
>> locale:
>> [1] en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8
>>
>> attached base packages:
>> [1] stats     graphics  grDevices utils     datasets  methods   base
>> What is the recommended base "Object" class I should define my slot  
>> to be so it can accept any object?
>>
>>
>>
>> Patrick
>>
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>>
>



More information about the R-devel mailing list