\Header{replications}{Number of Replications of Terms}
\keyword{models}{replications}
\begin{Usage}
\begin{verbatim}
replications(formula, data=NULL, na.action=na.fail)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\texttt{formula}] a formula or a terms object or a data frame
\item[\texttt{data}] a data frame used  to  find  the  objects in \texttt{formula}
\item[\texttt{na.action}] function for handling missing values
\end{ldescription}
\end{Arguments}
\begin{Description}
Returns a vector or a list of the number of replicates for
each term in the formula.\end{Description}
\begin{Details}
If \texttt{formula} is a data frame and \texttt{data} is missing,
\texttt{formula} is used for \texttt{data} with the formula \texttt{$\,\tilde{\,}$ .}.\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 \texttt{!is.list(replications(formula,data))}.\end{Value}
\begin{Author}
B.D. Ripley\end{Author}
\begin{SeeAlso}
\texttt{\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}

