On Apr 28, 2008, at 10:40 AM, Georg Ehret wrote:

Dear R Community, A simple problem (for some of you): I wish to index a
data.frame by all elements NOT in my index
E.g.:
a<-as.data.frame(matrix(rnorm(100),nrow=10,ncol=10))
b<-which(a$V1>0.8)
b
[1]  1  4  6 10
a_indexb<-a[b,]
a_notIndexB<-a[!b,]
nrow(a_notIndexB)
[1] 0

Indexing a on b is not a problem (a_indexb), but how can do get only the
elements left if I take out the elements indexed with b?


Hi,

I think one of the most wonderfully magic things about R is that it can use a logical array to index other things (like a data frame). You could use the extra step with which, but in your case you can bypass that step. Here is a simple example...

> a <- data.frame(V1 = seq(-5,5), V2 = seq(-5,5))
> a
   V1 V2
1  -5 -5
2  -4 -4
3  -3 -3
4  -2 -2
5  -1 -1
6   0  0
7   1  1
8   2  2
9   3  3
10  4  4
11  5  5
> b <- a$V1 > 0
> b
 [1] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
> a[b,]
   V1 V2
7   1  1
8   2  2
9   3  3
10  4  4
11  5  5
> a[!b,]
  V1 V2
1 -5 -5
2 -4 -4
3 -3 -3
4 -2 -2
5 -1 -1
6  0  0

Hope that helps!

Ben

______________________________________________
R-help@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.

Reply via email to