On Thu, 18 Dec 2003 15:03:04 +0100 juli g. pausas wrote: > Dear colleges, > I do not understand the following behaviour: > > > aa <- data.frame(a1= 1:10, a2= c(rep(NA, 5), 1:5) ) > > aa > a1 a2 > 1 1 NA > 2 2 NA > 3 3 NA > 4 4 NA > 5 5 NA > 6 6 1 > 7 7 2 > 8 8 3 > 9 9 4 > 10 10 5 > > aa[!aa$a2==1, ] # removing rows with a2==1 > a1 a2 > NA NA NA > NA.1 NA NA > NA.2 NA NA > NA.3 NA NA > NA.4 NA NA > 7 7 2 > 8 8 3 > 9 9 4 > 10 10 5 > > I didn't expect a1 to be affected. > Is aa[!aa$a2==1, ] an incorrect way to remove rows?
It leads to the behaviour above if there are NAs in the logical vector used for indexing: R> !aa$a2==1 [1] NA NA NA NA NA FALSE TRUE TRUE TRUE TRUE > Any other way? Several other ways are conceivable to treat the NA rows differently. This precise problem is solved, e.g., by R> aa[-which(aa$a2==1), ] a1 a2 1 1 NA 2 2 NA 3 3 NA 4 4 NA 5 5 NA 7 7 2 8 8 3 9 9 4 10 10 5 hth, Z > (R 1.8.1. for Windows) > Thanks in advance > > Juli > > ______________________________________________ > [EMAIL PROTECTED] mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help > ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help