On Dec 10, 2009, at 3:47 PM, Steve Lianoglou wrote:

Hi Ramya,

On Dec 10, 2009, at 3:29 PM, David Winsemius wrote:


On Dec 10, 2009, at 2:55 PM, Ramya wrote:


I have tow vectors one is the subset of another

x is a subset of X Both are vectors with n elements

X[X %in% x] would give me x again rite because it is a subset but i want all
those are not in x from X.

X[which(X != x)] should this do that

One way to increase your proficiency in R is to break out your statements so that each line does 1 thing.

You should look at the object that `X != x` returns to you. [Shuffle the elements in X and x and then see how that changes for extra credit]

Then look at what `which(X != x)` gives you.

Doing that, you'd see why what you tried originally didn't work.


Perhaps you think R _should_ read your mind, but we are not there yet. Try instead:

X[!(X %in% x)]

There are also set-like functions in R, which might fit your brain- way of thinking:

Get elements that are in both x and X:
intersect(X,x)

Get elements in X that are not in x
setdiff(X,x)

Yes there are, and beware that the setdiff function is an asymmetric version rather than what I expected, which was the complement of the intersection;

> ?setdiff
> X
[1] "H" "J" "E" "A" "F" "D" "B"
> x
[1] "H" "B" "F" "A" "Z"
> setdiff(union(X,x), intersect(X,x))  # which is what I expected
[1] "J" "E" "D" "Z"
> setdiff(X,x)   # what you get
[1] "J" "E" "D"


--
Steve Lianoglou
Graduate Student: Computational Systems Biology
 |  Memorial Sloan-Kettering Cancer Center
 |  Weill Medical College of Cornell University
Contact Info: http://cbio.mskcc.org/~lianos/contact


David Winsemius, MD
Heritage Laboratories
West Hartford, CT

______________________________________________
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