[R] NA, deleting rows

Achim Zeileis Achim.Zeileis at wu-wien.ac.at
Thu Dec 18 15:18:11 CET 2003


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
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>




More information about the R-help mailing list