[R] S4 : defining [<- using inheritance from 2 classes

Martin Morgan mtmorgan at fhcrc.org
Fri Nov 18 23:29:49 CET 2011


On 11/17/2011 09:46 PM, cgenolin wrote:
> Hi the list,
>
> I define a class 'C' that inherit from two classes 'A' and 'B'. 'A' and 'B'
> have no slot with similar names.
> ----------------
> setClass(
>      Class="C",
>      contains=c("A","B")
> )
>
>
> To define the get operator '[' for class "C", I simply use the get of "A" or
> "B" (the constante 'SLOT_OF_A' is a character holding the names of all the
> slot of A) :
> ----------------
> setMethod("[","C",
>    function(x,i,j,drop){
>       if(i%in%SLOT_OF_A){
>          x<- as(x,'A')
>       }else{
>          x<- as(x,'B')
>       }
>       return(x[i,j])
> }
> ----------------
>
> Is it possible to do something similar for the set operator '[<-' ?

Hi Christophe,

can you provide a working example? The above seems highly unusual; 
normally one expects class(x[i, j]) = class(x). Best guess at what 
you're wrote above is

setMethod("[", c("C", "character", "numeric"),
     function(x, i, j, ..., drop=TRUE) # conform to getGeneric("[")
{
     if (!i %in% slotNames(x))
         stop("cannot subset with '", i, "'")
     slot(x, i) = slot(x, i)[j]
     x
})

which still seems quite unusual.

Hope that helps,

Martin

>
> Thanks
> Christophe
>
> --
> View this message in context: http://r.789695.n4.nabble.com/S4-defining-using-inheritance-from-2-classes-tp4082217p4082217.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at 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.


-- 
Computational Biology
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109

Location: M1-B861
Telephone: 206 667-2793



More information about the R-help mailing list