sets {base}R Documentation

Set Operations


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


union(x, y)
intersect(x, y)
setdiff(x, y)
setequal(x, y)

is.element(el, set)


x, y, el, set

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


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.


For union, a vector of a common mode.

For intersect, a vector of a common mode, or NULL if x or y is NULL.

For setdiff, a vector of the same mode as x.

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

See Also


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


(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

[Package base version 4.3.0 Index]