\Header{codes}{Factor Codes}
\alias{codes.factor}{codes}
\alias{codes.ordered}{codes}
\alias{codes$\leftarrow $}{codes}
\keyword{category}{codes}
\keyword{classes}{codes}
\begin{Usage}
\begin{verbatim}
codes(x)
codes(x) <- value
\end{verbatim}
\end{Usage}
\begin{Description}
This (generic) function returns a numeric coding of a
factor. It can also be used to assign to a factor using the coded
form.\end{Description}
\begin{Value}
For an ordered factor, it returns the internal coding (1 for
the lowest group, 2 for the second lowest, etc.). For an unordered
factor, an alphabetical ordering of the levels is assumed, i.e the
level that is coded 1 is the one whose name is sorted first according
to the prevailing collating sequence.\end{Value}
\begin{Note}
The behaviour for unordered factors is dubious, but compatible
with S version 3. To get the internal coding of a factor, use
\texttt{\Link{as.integer}}. Note in particular that the codes may not be
the same in different language locales because of collating
differences.\end{Note}
\begin{SeeAlso}
\texttt{\Link{unclass}} is very similar if applied to factors;
\texttt{\Link{factor}}, \texttt{\Link{levels}}, \texttt{\Link{nlevels}}.\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
codes(rep(factor(c(20,10)),3))

x <- gl(3,5)
codes(x)[3] <- 2
x

data(esoph)
( ag <- esoph$alcgp[12:1] )
codes(ag)

codes(factor(1:10)) # BEWARE!
\end{ExampleCode}
\end{Examples}

