Is there a conventional way to test for nested factors?  I.e., if 'a' 
and 'b' are lists of same-length factors, does each level specified by 
'a' correspond to exactly one level specified by 'b'?

The function below seems to suffice, but I'd be happy to know of a more 
succinct solution, if it already exists.

Thanks,

Tim.

---

"%nested.in%" <- function(x,f,...){
        #coerce to list
        if(!is.list(x))x<-list(x)
        if(!is.list(f))f<-list(f)
        #collapse to vector
        x <- tapply(x[[1]],x)
        f <- tapply(f[[1]],f)
        #analyse
        return(all(sapply(lapply(split(f,x),unique),length)==1))
}

CO2$Plant %nested.in% CO2[,c("Type","Treatment")] #TRUE
CO2$Plant %nested.in% (CO2$uptake < mean(CO2$uptake)) #FALSE

______________________________________________
[email protected] 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