[R] how to know whether Vector B is a subset of Vector A
Marc Schwartz
marc_schwartz at comcast.net
Fri Oct 12 14:43:17 CEST 2007
On Fri, 2007-10-12 at 18:47 +0800, Samuel wrote:
> Hi,
>
> I'm quite fresh to R, and a layman of English as well. I hope I can make you
> understood.
>
> Now I have two vectors A and B. Is there any quick way to know whether B is
> a subset of A? and If B is a subset of A, can I know easily which elements
> in A (the index of A) equals to B's elements accordingly?
>
> For example,
>
> > a<-1:20
> > b=c(2,5,9,7,4,8,3)
> >
>
> Question 1: we know b is a subset of a, but how does R know that?
>
> Question 2: since we know b is a subset of a, then which a's elements equals
> to b? I do it like this:
>
> test=0
> > for (i in 1:length(b)) test[i]=which(a==b[i])
> > test
> >
>
> Is there any easier way to know these indexes?
>
> Thanks a lot for you helps in advance
You can use %in% to determine whether or not the elements of 'b' are in
'a':
a <- 1:20
b <- c(2, 5, 9, 7, 4, 8, 3)
> b %in% a
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE
To get the indices of b's elements in 'a', you can do:
> which(a %in% b)
[1] 2 3 4 5 7 8 9
If you want to know whether or not ALL of the elements of 'b' are in
'a', you add the use of all() to the first example:
> all(b %in% a)
[1] TRUE
See ?"%in%" and ?all
HTH,
Marc Schwartz
More information about the R-help
mailing list