blob: 47e23333d954b90ffece670a703e2a22192a70d7 [file] [log] [blame]
% File src/library/base/man/sets.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2011 R Core Team
% Distributed under GPL 2 or later
\name{sets}
\alias{union}
\alias{intersect}
\alias{setdiff}
\alias{is.element}
\alias{setequal}
\concept{set operations}
\concept{sets} % not that useful for searches, but requested in a bug report
\alias{intersection}
\concept{difference}
\title{Set Operations}
\usage{
union(x, y)
intersect(x, y)
setdiff(x, y)
setequal(x, y)
is.element(el, set)
}
\arguments{
\item{x, y, el, set}{vectors (of the same mode) containing a sequence
of items (conceptually) with no duplicated values.}
}
\description{
Performs \bold{set} union, intersection, (asymmetric!) difference,
equality and membership on two vectors.
}
\details{
Each of \code{union}, \code{intersect}, \code{setdiff} and
\code{setequal} will discard any duplicated values in the arguments,
and they apply \code{\link{as.vector}} to their arguments (and so
in particular coerce factors to character vectors).
\code{is.element(x, y)} is identical to \code{x \%in\% y}.
}
\value{
A vector of the same \code{\link{mode}} as \code{x} or \code{y} for
\code{setdiff} and \code{intersect}, respectively, and
of a common mode for \code{union}.
A logical scalar for \code{setequal} and a logical of the same
length as \code{x} for \code{is.element}.
}
\seealso{
\code{\link{\%in\%}}
\sQuote{\link{plotmath}} for the use of \code{union} and
\code{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
}
\keyword{misc}