This question already has an answer here:
I guess it is a very easy question.
v1 = 1:10
v2 = c(2,4,7)
(none of the numbers are repeated. No need to use unique()
)
I want a vector containing all the values in v1 that are not in v2.
solution = c(1,3,5,6,8,9,10)
I can do this using a for loop but I'm sure there are easier solution.
Use the
%in%
operator with logical NOT (!
) to subsetv1
by values not inv2
:Or you could look for non-matches of v1 in v2 (this is almost the same):
Or using
which
to get the indices:All flavours of the same thing. And there are many more ways to do this. Definitely don't use a loop for this because this kind of operation is a perfect example of how you can take advatage of R's vectorisation. Loops are better to be called for their side-effects and/or when the processing to number of iterations ratio is large.