\Header{contrasts}{Get and Set Contrast Matrices}
\alias{contrasts<\Rdash}{contrasts}
\keyword{design}{contrasts}
\keyword{regression}{contrasts}
\begin{Description}\relax
Set and view the contrasts associated with a factor.\end{Description}
\begin{Usage}
\begin{verbatim}
contrasts(x, contrasts = TRUE)
contrasts(x, how.many) <- ctr
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{x}] a factor.
\item[\code{contrasts}] logical. See Details.
\item[\code{how.many}] How many contrasts should be made. Defaults to one
less than the number of levels of \code{x}.  This need not be the
same as the number of columns of \code{ctr}.
\item[\code{ctr}] either a matrix whose columns give coefficients for
contrasts in the levels of \code{x}, or the (quoted) name of a
function which computes such matrices.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
If contrasts are not set for a factor the default functions from
\code{\Link{options}("contrasts")} are used.

The argument \code{contrasts} is ignored if \code{x} has a matrix
\code{contrasts} attribute set. Otherwise if \code{contrasts = TRUE}
it is passed to a contrasts function such as
\code{\Link{contr.treatment}} and if \code{contrasts = FALSE}
an identity matrix is returned.\end{Details}
\begin{Note}\relax
Prior to \R{} version 1.2.0, \code{contrasts(, FALSE)} called a
contrasts function with \code{contrasts = FALSE}.  This normally gave
the same result, but not for \code{\Link{contr.poly}}, the default for
ordered factors.\end{Note}
\begin{SeeAlso}\relax
\code{\Link{C}},
\code{\Link{contr.helmert}},
\code{\Link{contr.poly}},
\code{\Link{contr.sum}},
\code{\Link{contr.treatment}};
\code{\Link{glm}},
\code{\Link{aov}},
\code{\Link{lm}}.\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
example(factor)
(fff <- factor(ff))
contrasts(fff) # treatment contrasts by default
contrasts(C(fff, sum))
contrasts(fff, contrasts = FALSE) # the 5x5 identity matrix

contrasts(fff) <- contr.sum(5); contrasts(fff)  # set sum contrasts
contrasts(fff, 2) <- contr.sum(5); contrasts(fff)  # set 2 contrasts
# supply 2 contrasts, compute 2 more to make full set of 4.
contrasts(fff) <- contr.sum(5)[,1:2]; contrasts(fff)
\end{ExampleCode}
\end{Examples}

