sets

0th

Percentile

Set Operations

Performs set union, intersection, (asymmetric!) difference, equality and membership on two vectors.

Keywords
misc
Usage
union(x, y)
intersect(x, y)
setdiff(x, y)
setequal(x, y)

is.element(el, set)

Arguments
x, y, el, set

vectors (of the same mode) containing a sequence of items (conceptually) with no duplicated values.

Details

Each of union, intersect, setdiff and setequal will discard any duplicated values in the arguments, and they apply as.vector to their arguments (and so in particular coerce factors to character vectors).

is.element(x, y) is identical to x %in% y.

Value

A vector of the same mode as x or y for setdiff and intersect, respectively, and of a common mode for union.

A logical scalar for setequal and a logical of the same length as x for is.element.

See Also

%in%

plotmath’ for the use of union and intersect in plot annotation.

Aliases
  • union
  • intersect
  • setdiff
  • is.element
  • setequal
  • intersection
Examples
library(base) # NOT RUN { (x <- c(sort(sample(1:20, 9)), NA)) (y <- c(sort(sample(3:23, 7)), NA)) union(x, y) intersect(x, y) setdiff(x, y) setdiff(y, x) setequal(x, y) ## True for all possible x & y : setequal( union(x, y), c(setdiff(x, y), intersect(x, y), setdiff(y, x))) is.element(x, y) # length 10 is.element(y, x) # length 8 # }
Documentation reproduced from package base, version 3.5.1, License: Part of R 3.5.1

Community examples

mark@niemannross.com at Nov 15, 2018 base v3.5.1

example for [LinkedIn Learning Video](https://linkedin-learning.pxf.io/rweekly_equalIn) ```r # create two vectors to demonstrate vectA <- c(1:10) vectB <- c(10:15) # is vectA == vectB ? setequal(vectA, vectB) # what parts of vectA are in vectB? is.element(vectA, vectB) # what parts of vectB are in vectA? is.element(vectB, vectA) # equivalent notation for is.element(vectA, vectB) vectA %in% vectB # elements in sets do not need to be sorted vectBRandom <- sample(vectB, length(vectB)) vectBRandom intersect(vectA, vectBRandom) setdiff(vectBRandom, vectA) setequal(vectB, vectBRandom) ```

mark@niemannross.com at Nov 5, 2018 base v3.5.1

Example files from [LinkedIn Learning, R for Data Science, Lunchbreak Lessons](https://linkedin-learning.pxf.io/Rweekly_setsUnionInterDiff). ```r # create two vectors to demonstrate vectA <- c(1:10) vectB <- c(10:15) # union - combine the vectors - removing duplicates union(vectA, vectB) # intersect - find the overlap intersect(vectA, vectB) # what is unique about vectA? setdiff(vectA, vectB) # what is unique about vectB? setdiff(vectB, vectA) # elements in sets do not need to be sorted vectBRandom <- sample(vectB, length(vectB)) vectBRandom intersect(vectA, vectBRandom) setdiff(vectBRandom, vectA) setequal(vectB, vectBRandom) ```