Rev 84767 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/base/man/zMethods.Rd% Part of the R package, https://www.R-project.org% Copyright 1995-2023 R Core Team% Distributed under GPL 2 or later\name{InternalMethods}\title{Internal Generic Functions}\alias{InternalMethods}\alias{InternalGenerics}\alias{internal generic}\alias{.S3PrimitiveGenerics}\alias{.internalGenerics}\description{Many \R-internal functions are \emph{generic} and allowmethods to be written for.}% -------------------- grep -nw DispatchOrEval src/*/*[ch]% --------------\details{The following primitive and internal functions are \emph{generic},i.e., you can write \code{\link{methods}} for them:% DispatchOrEval internal generic: [\code{\link{[}},% % do_subset() [subset.c]% DispatchOrEval internal generic: [[\code{\link{[[}},% % do_subset2() [subset.c]% DispatchOrEval internal generic: $\code{\link{$}},% DispatchOrEval internal generic: [<-\code{\link{[<-}},% DispatchOrEval internal generic: [[<-\code{\link{[[<-}},% DispatchOrEval internal generic: $<-\code{\link{$<-}},% DispatchOrEval internal generic: length\code{\link{length}},% % do_length() [array.c]% DispatchOrEval internal generic: length<-\code{\link{length<-}},% % do_lengthgets() [builtin.c]% DispatchOrEval internal generic: lengths\code{\link{lengths}},% % do_lengths() [array.c]% DispatchOrEval internal generic: dimnames\code{\link{dimnames}},% % do_dimnames() [attrib.c]% DispatchOrEval internal generic: dimnames<-\code{\link{dimnames<-}},% % do_dimnamesgets() [attrib.c]% DispatchOrEval internal generic: dim\code{\link{dim}},% % do_dim() [attrib.c]% DispatchOrEval internal generic: dim<-\code{\link{dim<-}},% % do_dimgets() [attrib.c]% DispatchOrEval internal generic: names\code{\link{names}},% % do_names() [attrib.c]% DispatchOrEval internal generic: names<-\code{\link{names<-}},% % do_namesgets() [attrib.c]% DispatchOrEval internal generic: levels<-\code{\link{levels<-}},% % do_levelsgets() [attrib.c]% DispatchOrEval internal generic: @\code{\link{@}},% % do_AT() [attrib.c]% DispatchOrEval internal generic: @<-\code{\link{@<-}},% % do_attrgets() [attrib.c]% DispatchOrEval internal generic: c\code{\link{c}},% % do_c() [bind.c]% DispatchOrEval internal generic: unlist\code{\link{unlist}},% % do_unlist() [bind.c]\code{\link{cbind}},% not via DispatchOrEval [bind.c]\code{\link{rbind}},% DispatchOrEval internal generic: as.character\code{\link{as.character}},% DispatchOrEval internal generic: as.complex\code{\link{as.complex}},% DispatchOrEval internal generic: as.double\code{\link{as.double}},% DispatchOrEval internal generic: as.integer\code{\link{as.integer}},% DispatchOrEval internal generic: as.logical\code{\link{as.logical}},% DispatchOrEval internal generic: as.raw\code{\link{as.raw}},% DispatchOrEval internal generic: as.vector\code{\link{as.vector}},% % do_asvector() [coerce.c]% DispatchOrEval internal generic: as.call\code{\link{as.call}},% % do_ascall() [coerce.c]% DispatchOrEval internal generic: as.environment\code{\link{as.environment}}%% do_as_environment() [envir.c]% DispatchOrEval internal generic: is.array\code{\link{is.array}},% DispatchOrEval internal generic: is.matrix\code{\link{is.matrix}},% DispatchOrEval internal generic: is.na\code{\link{is.na}},% % do_isna() [coerce.c]% DispatchOrEval internal generic: anyNA\code{\link{anyNA}},% % do_anyNA() [coerce.c]% DispatchOrEval internal generic: is.nan\code{\link{is.nan}},% % do_isnan() [coerce.c]% DispatchOrEval internal generic: is.finite\code{\link{is.finite}}% % do_isfinite() [coerce.c]% DispatchOrEval internal generic: is.infinite\code{\link{is.infinite}}% % do_isinfinite() [coerce.c]% DispatchOrEval internal generic: is.numeric\code{\link{is.numeric}},% DispatchOrEval internal generic: nchar\code{\link{nchar}}% % do_nchar() [character.c]% DispatchOrEval internal generic: rep\code{\link{rep}},% [seq.c]% DispatchOrEval internal generic: rep.int\code{\link{rep.int}}% % do_rep_int() [seq.c]% DispatchOrEval internal generic: rep_len\code{\link{rep_len}}% % do_rep_len() [seq.c]% DispatchOrEval internal generic: seq.int\code{\link{seq.int}}(which dispatches methods for \code{"seq"}),% [seq.c]% DispatchOrEval internal generic: is.unsorted\code{\link{is.unsorted}}% % do_isunsorted() [sort.c]and% DispatchOrEval internal generic: xtfrm\code{\link{xtfrm}}% [sort.c]In addition, \code{is.name} is a synonym for \code{\link{is.symbol}} anddispatches methods for the latter. Similarly, \code{\link{as.numeric}}is a synonym for \code{as.double} and dispatches methods for thelatter, i.e., S3 methods are for \code{as.double}, whereas S4 methodsare to be written for \code{as.numeric}.Note that all of the \link{group generic} functions are alsointernal/primitive and allow methods to be written for them.\code{.S3PrimitiveGenerics} is a character vector listing theprimitives which are internal generic and not \link{group generic},(not only for S3 but also S4).Similarly, the \code{.internalGenerics} character vector contains the namesof the internal (via \code{\link{.Internal}(..)}) non-primitive functionswhich are internally generic.}\note{For efficiency, internal dispatch only occurs on \emph{objects}, thatis those for which \code{\link{is.object}} returns true.}\seealso{\code{\link{methods}} for the methods which are available.}\keyword{methods}