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@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