\HeaderA{interaction}{Compute Factor Interactions}{interaction}
\keyword{category}{interaction}
\begin{Description}\relax
\code{interaction} computes a factor which represents the interaction
of the given factors.  The result of \code{interaction} is always unordered.
\end{Description}
\begin{Usage}
\begin{verbatim}
interaction(..., drop = FALSE, sep = ".")
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{...}] the factors for which interaction is to be computed, or a
single list giving those factors.
\item[\code{drop}] if \code{drop} is \code{TRUE}, empty factor levels
are dropped from the result.  The default is to retain all
factor levels.
\item[\code{sep}] string to construct the new level labels by joining the
constituent ones.
\end{ldescription}
\end{Arguments}
\begin{Value}
A factor which represents the interaction of the given factors.
The levels are labelled as the levels of the individual factors joined
by \code{sep}, i.e. \code{.} by default.
\end{Value}
\begin{References}\relax
Chambers, J. M. and Hastie, T. J. (1992)
\emph{Statistical Models in S}.
Wadsworth \& Brooks/Cole.
\end{References}
\begin{SeeAlso}\relax
\code{\LinkA{factor}{factor}}; \code{\LinkA{:}{:}} where \code{f:g} is the same as
\code{interaction(f,g, sep=":")} when \code{f} and  \code{g} are factors.
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
a <- gl(2, 4, 8)
b <- gl(2, 2, 8, label = c("ctrl", "treat"))
s <- gl(2, 1, 8, label = c("M", "F"))
interaction(a, b)
interaction(a, b, s, sep = ":")
\end{ExampleCode}
\end{Examples}

