Hi David,

thanks for the reply. You are right. Using the %in% is more stable and I gonna 
change my code.

When testing for a specific class using 'is' one has to start at the lowest 
heir and walk up the inheritance structure. Starting at the checks at the root 
will always give TRUE. Having a structure which is quite complicated let me 
move to the check I suggested in my first mail. 

Best

Simon

On Jul 23, 2013, at 6:15 PM, David Winsemius <dwinsem...@comcast.net> wrote:

> 
> On Jul 23, 2013, at 5:36 AM, Simon Zehnder wrote:
> 
>> Dear R-Users and R-Devels,
>> 
>> I have large project based on S4 classes. While writing my unit tests I 
>> found out, that 'is' cannot test for a specific class, as also inherited 
>> classes can be treated as their super classes. I need to do checks for 
>> specific classes. What I do right now is sth. like
>> 
>> if (class(myClass) == "firstClass") {
> 
> I would think that you would need to use `%in%` instead. 
> 
> if( "firstClass" %in% class(myObject) ){
> 
> Objects can have more than one class, so testing with "==" would fail in 
> those instances.
> 
> 
>> 
>> } else if (class(myClass) == "secondClass") {
>> 
>> }
>> 
>> Is this the usual way how classes are checked in R?
> 
> Well, `inherits` IS the usual way.
> 
>> I was expecting some specific method (and 'inherits' or 'extends' is not 
>> what I look for)...
>> 
>> 
>> Best
>> 
>> Simon
>> 
>>      [[alternative HTML version deleted]]
> 
> Plain-text format is the recommended format for Rhelp
> 
> -- 
> David Winsemius
> Alameda, CA, USA
> 

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to