\HeaderA{is.fullrank}{Check for Full Column Rank}{is.fullrank}
\aliasA{nonEstimable}{is.fullrank}{nonEstimable}
\keyword{algebra}{is.fullrank}
\begin{Description}\relax
Test whether a numeric matrix has full column rank.
\end{Description}
\begin{Usage}
\begin{verbatim}
is.fullrank(x)
nonEstimable(x)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{x}] a numeric matrix or vector
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
\code{is.fullrank} is used to check the integrity of design matrices in limma, for example after \LinkA{subsetting}{subsetting} operations.

\code{nonEstimable} is used by \code{\LinkA{lmFit}{lmFit}} to report which coefficients in a linear model cannot be estimated.
\end{Details}
\begin{Value}
\code{is.fullrank} returns \code{TRUE} or \code{FALSE}.

\code{nonEstimable} returns a character vector of names for the columns of \code{x} which are linearly dependent on previous columns.
If \code{x} has full column rank, then the value is \code{NULL}.
\end{Value}
\begin{Author}\relax
Gordon Smyth
\end{Author}
\begin{Examples}
\begin{ExampleCode}
# TRUE
is.fullrank(1)
is.fullrank(cbind(1,0:1))

# FALSE
is.fullrank(0)
is.fullrank(matrix(1,2,2))
nonEstimable(matrix(1,2,2))
\end{ExampleCode}
\end{Examples}

