Rev 71370 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/base/man/isS4.Rd% Part of the R package, https://www.R-project.org% Copyright 1995-2012 R Core Team% Distributed under GPL 2 or later\name{isS4}\alias{isS4}\alias{asS4}\alias{S4}\alias{asS3}\title{ Test for an S4 object }\description{Tests whether the object is an instance of an S4 class.}\usage{isS4(object)asS4(object, flag = TRUE, complete = TRUE)asS3(object, flag = TRUE, complete = TRUE)}\arguments{\item{object}{Any R object.}\item{flag}{Optional, logical: indicate direction of conversion.}\item{complete}{Optional, logical: whether conversion to S3 iscompleted. Not usually needed, but see the details section.}}\details{Note that \code{isS4} does not rely on the \pkg{methods}package, so in particular it can be used to detect the need to\code{\link{require}} that package.\code{asS3} uses the value of\code{complete} to control whether an attempt is made to transform\code{object} into a valid object of the implied S3 class. If\code{complete} is \code{TRUE},then an object from an S4 class extending an S3 class will betransformed into an S3 object with the corresponding S3 class (see\code{\link{S3Part}}). This includes classes extending thepseudo-classes \code{array} and \code{matrix}: such objects will havetheir class attribute set to \code{NULL}.\code{isS4} is \link{primitive}.}\value{\code{isS4} always returns \code{TRUE} or \code{FALSE} according towhether the internal flag marking an S4 object has been turned on forthis object.\code{asS4} and \code{asS3} will turn this flag on or off,and \code{asS3} will set the class from the objects \code{.S3Class}slot if one exists. Note that \code{asS3} will \emph{not} turnthe object into an S3 objectunless there is a valid conversion; that is, an object of type otherthan \code{"S4"} for which the S4 object is an extension, unlessargument \code{complete} is \code{FALSE}.}\seealso{\code{\link{is.object}} for a more general test; \link[methods]{Introduction}for general information on S4; \link[methods]{Classes_Details} for more on S4class definitions.}\examples{\dontshow{require(methods)}isS4(pi) # FALSEisS4(getClass("MethodDefinition")) # TRUE\dontshow{stopifnot(isS4(asS4(Sys.time())))## Following is a correction of previous behavior. See note in the## value section abovestopifnot(isS4(asS4(getClass("MethodDefinition"), FALSE, 2)))stopifnot(!isS4(asS4(getClass("MethodDefinition"), FALSE, 0)))}}\keyword{programming}