\HeaderA{InternalMethods}{Internal Generic Functions}{InternalMethods}
\aliasA{.S3PrimitiveGenerics}{InternalMethods}{.S3PrimitiveGenerics}
\aliasA{internal generic}{InternalMethods}{internal generic}
\aliasA{InternalGenerics}{InternalMethods}{InternalGenerics}
\keyword{methods}{InternalMethods}
\begin{Description}\relax
Many \R-internal functions are \emph{generic} and allow
methods to be written for.
\end{Description}
\begin{Details}\relax
The following primitive and internal functions are \emph{generic},
i.e., you can write \code{\LinkA{methods}{methods}} for them:

\code{\LinkA{[}{[}},
\code{\LinkA{[[}{[[}},
\code{\LinkA{\$}{.Rdol.}},
\code{\LinkA{[<\Rdash}{[<.Rdash.}},
\code{\LinkA{[[<\Rdash}{[[<.Rdash.}},
\code{\LinkA{\$<\Rdash}{.Rdol.<.Rdash.}},

\code{\LinkA{length}{length}},
\code{\LinkA{length<\Rdash}{length<.Rdash.}},
\code{\LinkA{dimnames}{dimnames}},
\code{\LinkA{dimnames<\Rdash}{dimnames<.Rdash.}},
\code{\LinkA{dim}{dim}},
\code{\LinkA{dim<\Rdash}{dim<.Rdash.}},
\code{\LinkA{names}{names}},
\code{\LinkA{names<\Rdash}{names<.Rdash.}},
\code{\LinkA{levels<\Rdash}{levels<.Rdash.}},

\code{\LinkA{c}{c}},
\code{\LinkA{unlist}{unlist}},
\code{\LinkA{cbind}{cbind}},
\code{\LinkA{rbind}{rbind}},

\code{\LinkA{as.character}{as.character}},
\code{\LinkA{as.complex}{as.complex}},
\code{\LinkA{as.double}{as.double}},
\code{\LinkA{as.integer}{as.integer}},
\code{\LinkA{as.logical}{as.logical}},
\code{\LinkA{as.raw}{as.raw}},
\code{\LinkA{as.vector}{as.vector}},
\code{\LinkA{is.array}{is.array}},
\code{\LinkA{is.matrix}{is.matrix}},
\code{\LinkA{is.na}{is.na}},
\code{\LinkA{is.nan}{is.nan}},
\code{\LinkA{is.numeric}{is.numeric}},
\code{\LinkA{rep}{rep}} and
\code{\LinkA{seq.int}{seq.int}}
(which dispatches methods for \code{"seq"}).

In addition, \code{is.name} is a synonym for \code{is.symbol} and
dispatches methods for the latter.

Note that all of the \LinkA{group generic}{group generic} functions are also
internal/primitive and allow methods to be written for them.

\code{.S3PrimitiveGenerics} is a character vector listing the
primitives which are internal generic and not \LinkA{group generic}{group generic}.
Currently \code{\LinkA{as.vector}{as.vector}}, \code{\LinkA{cbind}{cbind}},
\code{\LinkA{rbind}{rbind}} and \code{\LinkA{unlist}{unlist}} are the internal
non-primitive functions which are internally generic.

For efficiency, internal dispatch only occurs on \emph{objects}, that
is those for which \code{\LinkA{is.object}{is.object}} returns true.
\end{Details}
\begin{SeeAlso}\relax
\code{\LinkA{methods}{methods}} for the methods which are available.
\end{SeeAlso}

