blob: 3c5ab3fda56147d7c755947192692c718dbf12cb [file] [log] [blame]
% File src/library/methods/man/as.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2016 R Core Team
% Distributed under GPL 2 or later
\name{as}
\alias{as}
\alias{as<-}
\title{Force an Object to Belong to a Class}
\description{
Coerce an object to a given class.
}
\usage{
as(object, Class, strict=TRUE, ext)
as(object, Class) <- value
}
\section{Description}{
\code{as(object)}
returns the version of this object coerced to be the given
\code{Class}. When used in the replacement form on the left of
an assignment, the portion of the object corresponding to
\code{Class} is replaced by \code{value}.
The operation of \code{as()} in either form depends on the
definition of coerce methods. Methods are defined automatically
when the two classes are related by inheritance; that is, when
one of the classes is a subclass of the other.
Coerce methods are also predefined for basic classes (including all
the types of vectors, functions and a few others).
Beyond these two sources of methods, further methods are defined
by calls to the \code{\link{setAs}} function. See that
documentation also for details of how coerce methods work. Use
\code{showMethods(coerce)} for a list of all currently defined methods, as in the
example below.
}
\arguments{
\item{object}{any \R object.}
\item{Class}{the name of the class to which \code{object} should be
coerced. }
\item{strict}{logical flag. If \code{TRUE}, the returned object
must be strictly from the target class (unless that class is a
virtual class, in which case the object will be from the closest
actual class, in particular the original object, if that class extends the
virtual class directly).
If \code{strict = FALSE}, any simple extension of the target class
will be returned, without further change. A simple extension is,
roughly, one that just adds slots to an existing class.}
\item{value}{The value to use to modify \code{object} (see the
discussion below). You should supply an object with class
\code{Class}; some coercion is done, but you're unwise to rely on
it.}
\item{ext}{an optional object
defining how \code{Class} is extended by the class of the
object (as returned by \code{\link{possibleExtends}}).
This argument is used internally;
do not use it directly.
}
}
\section{Basic Coercion Methods}{
Methods are pre-defined for coercing any object to one of the basic
datatypes. For example, \code{as(x, "numeric")} uses the existing
\code{as.numeric} function. These and all other existing methods
can be listed as shown in the example.
}
\seealso{
If you think of using \code{try(as(x, cl))}, consider
\code{\link{canCoerce}(x, cl)} instead.
}
\examples{
## Show all the existing methods for as()
showMethods("coerce")
}
\references{
Chambers, John M. (2016)
\emph{Extending R},
Chapman & Hall.
(Chapters 9 and 10.)
}
\keyword{programming}
\keyword{classes}
\keyword{methods}