| % 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 is |
| completed. 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 be |
| transformed into an S3 object with the corresponding S3 class (see |
| \code{\link{S3Part}}). This includes classes extending the |
| pseudo-classes \code{array} and \code{matrix}: such objects will have |
| their class attribute set to \code{NULL}. |
| |
| \code{isS4} is \link{primitive}. |
| } |
| |
| \value{ |
| \code{isS4} always returns \code{TRUE} or \code{FALSE} according to |
| whether the internal flag marking an S4 object has been turned on for |
| this 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} turn |
| the object into an S3 object |
| unless there is a valid conversion; that is, an object of type other |
| than \code{"S4"} for which the S4 object is an extension, unless |
| argument \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 S4 |
| class definitions. |
| } |
| |
| \examples{ |
| \dontshow{require(methods)} |
| isS4(pi) # FALSE |
| isS4(getClass("MethodDefinition")) # TRUE |
| \dontshow{ |
| stopifnot(isS4(asS4(Sys.time()))) |
| ## Following is a correction of previous behavior. See note in the |
| ## value section above |
| stopifnot(isS4(asS4(getClass("MethodDefinition"), FALSE, 2))) |
| stopifnot(!isS4(asS4(getClass("MethodDefinition"), FALSE, 0))) |
| } |
| } |
| \keyword{programming} |