sets {base} | R Documentation |

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`

.

‘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.2.0 Index]