Paulo E. Cardoso
2009-Jun-30 10:30 UTC
[R] Skip loop combination when one factor's level is missing
Hi, In a symmetric design one may have a data.frame with, say, two factors (two columns), each one with n levels. In a nested loop, to run a expression combining levels of each factors, to produce a new data.frame, if one level is absent, the loop is interrupted; one gets a empty object. Is there a way to avoid or skip combinations of factors in such nested loops? I think that the approach below is a very crude example: for(i in unique(DF$ID1)) #! For each ID1 level { for (e in unique(DF$ID2)) #! For each ID2 level { DF.N <- DF[DF$ID1==i & DF$ID2==e,] if(nrow(DF.N)==0) DF2 <- ?? else Any idea will be welcome Paulo [[alternative HTML version deleted]]
Uwe Ligges
2009-Jun-30 11:49 UTC
[R] Skip loop combination when one factor's level is missing
You can use "drop=TRUE" as argument in indexing (brackets) to drop unused levels, see the following example: a <- factor(1:2, levels=1:3) a # [1] 1 2 # Levels: 1 2 3 for(i in levels(a)) print(i) #[1] "1" #[1] "2" #[1] "3" for(i in levels(a[, drop=TRUE])) print(i) #[1] "1" #[1] "2" Uwe Ligges Paulo E. Cardoso wrote:> Hi, > > > > In a symmetric design one may have a data.frame with, say, two factors (two > columns), each one with n levels. > > > > In a nested loop, to run a expression combining levels of each factors, to > produce a new data.frame, if one level is absent, the loop is interrupted; > one gets a empty object. > > > > Is there a way to avoid or skip combinations of factors in such nested > loops? > > > > I think that the approach below is a very crude example: > > > > for(i in unique(DF$ID1)) #! For each ID1 level > > { > > for (e in unique(DF$ID2)) #! For each ID2 level > > { > > DF.N <- DF[DF$ID1==i & DF$ID2==e,] > > if(nrow(DF.N)==0) DF2 <- ?? > > else > > > > > > Any idea will be welcome > > > > Paulo > > > [[alternative HTML version deleted]] > > ______________________________________________ > 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.