sets {base} | R Documentation |
Set Operations
Description
Performs set union, intersection, (asymmetric!) difference, equality and membership on two vectors.
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
The set operations are intended for “same-kind”
“vector-like” objects containing sequences of items. However,
being “vector-like” cannot easily be ascertained (in particular
as is.vector()
enforces a very narrow concept of
“vector”).
Thus, for R < 4.5.0, the set operands were always transformed via
as.vector()
(so that in particular, factors were coerced
to character vectors). Starting with R 4.5.0, operands of the
“same kind” (in the sense that isa(x, class(y))
or isa(y, class(x))
which appear to be
“vector-like” (in the sense that subscripting x
and/or
y
by 0L
leaves the class unchanged) are no longer
transformed. In particular, union, intersection and set difference
of two factors now give factors (see the examples).
is.element(x, y)
is identical to x %in% y
(after
possibly transforming via as.vector()
).
Value
For union
, a vector of a common mode or class.
For intersect
, a vector of a common mode or class, or
NULL
if x
or y
is NULL
.
For setdiff
, a vector of the same mode
or class
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.
Examples
(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
## Factors:
x <- as.factor(c("A", "B", "A"))
y <- as.factor(c("B", "b"))
union(x, y)
intersect(x, y)
setdiff(x, y)
setdiff(y, x)
## (Note that union() and intersect() merge the levels.)