\Header{match}{Value Matching}
\alias{\%in\%}{match}
\keyword{manip}{match}
\keyword{logic}{match}
\begin{Description}\relax
\code{match}: If \code{x[i]} is found to equal \code{table[j]}
then the value returned in the \code{i}-th position of the return value is
\code{j}.  If no match is found, the value is \code{nomatch}.

\code{\%in\%}: A utility function, currently defined as \\
\code{"\%in\%" <- function(x, table) match(x, table, nomatch = 0) > 0}
allowing
an intuitive usage and returning a logical vector of length \code{length(x)}.\end{Description}
\begin{Usage}
\begin{verbatim}
match(x, table, nomatch=NA)
x %in% table
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{x}] the values to be matched.
\item[\code{table}] the values to be matched against.
\item[\code{nomatch}] the value to be returned in the case when no match is found.
\end{ldescription}
\end{Arguments}
\begin{SeeAlso}\relax
\code{\Link{pmatch}} and \code{\Link{charmatch}} for (\emph{partial})
string matching, \code{\Link{match.arg}}, etc for function argument matching.\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
## The intersection of two sets :
intersect <- function(x, y) y[match(x, y, nomatch = 0)]
intersect(1:10,7:20)

1:10 %in% c(1,3,5,9)
sstr <- c("c","ab","B","bba","c","@","bla","a","Ba","%")
sstr[sstr %in% c(letters,LETTERS)]

"%w/o%" <- function(x,y) x[!x %in% y] #--  x without y
(1:10) %w/o% c(3,7,12)
\end{ExampleCode}
\end{Examples}

