\Header{replications}{Number of Replications of Terms}
\keyword{models}{replications}
\begin{Description}\relax
Returns a vector or a list of the number of replicates for
each term in the formula.\end{Description}
\begin{Usage}
\begin{verbatim}
replications(formula, data=NULL, na.action)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{formula}] a formula or a terms object or a data frame.
\item[\code{data}] a data frame used  to  find  the  objects in \code{formula}.
\item[\code{na.action}] function for handling missing values.  Defaults to
a \code{na.action} attribute of \code{data}, then
a setting of the option \code{na.action}, or \code{na.fail} if that
is not set.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
If \code{formula} is a data frame and \code{data} is missing,
\code{formula} is used for \code{data} with the formula \code{\textasciitilde{} .}.\end{Details}
\begin{Value}
A vector or list with one entry for each term in the formula giving
the number(s) of replications for each level. If all levels are
balanced (have the same number of replications) the result is a
vector, otherwise it is a list with a component for each terms,
as a vector, matrix or array as required.

A test for balance is \code{!is.list(replications(formula,data))}.\end{Value}
\begin{Author}\relax
B. D. Ripley\end{Author}
\begin{SeeAlso}\relax
\code{\Link{model.tables}}\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
## From Venables and Ripley (1997) p.210.
N <- c(0,1,0,1,1,1,0,0,0,1,1,0,1,1,0,0,1,0,1,0,1,1,0,0)
P <- c(1,1,0,0,0,1,0,1,1,1,0,0,0,1,0,1,1,0,0,1,0,1,1,0)
K <- c(1,0,0,1,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,1,1,0,1,0)
yield <- c(49.5,62.8,46.8,57.0,59.8,58.5,55.5,56.0,62.8,55.8,69.5,
55.0, 62.0,48.8,45.5,44.2,52.0,51.5,49.8,48.8,57.2,59.0,53.2,56.0)

npk <- data.frame(block=gl(6,4), N=factor(N), P=factor(P),
                  K=factor(K), yield=yield)
replications(~ . - yield, npk)
\end{ExampleCode}
\end{Examples}

