isS4 {base} | R Documentation |
Tests whether the object is an instance of an S4 class.
isS4(object)
asS4(object, flag = TRUE, complete = TRUE)
object |
Any R object. |
flag |
A single logical value; not |
complete |
How to complete the transformation to/from S4. Only
currently used when |
Note that isS4
does not rely on the methods
package, so in particular it can be used to detect the need to
require
that package. (But asS4
does depend on
methods.)
Note that the S4 methods for primitive functions do not apply to S3
classes and that the methods for basic classes, such as the vector
types, are sealed.
To apply S4 methods reliably to an S3 object, define an S4 class
that extends the S3 class
(setOldClass
).
When asS4
is called with flag == FALSE
, the value of
complete
controls whether an attempt is made to transform
object
into a valid object of the implied S3 class. If so,
then an object from an S4 class extending an S3 class will be
transformed into an S3 object with the corresponding S3 class (see
S3Part
). This includes classes
extending the pseudo-classes array
and matrix
: such
objects will have their class attribute set to NULL
.
isS4
always returns TRUE
or FALSE
according to
whether the internal flag marking an S4 object has been turned on for
this object.
asS4
will turn this flag on or off, according to argument
flag
, and in the latter case complete the conversion as
described under argument complete
. Note that with flag
FALSE
, an S4 object will not but turned into an S3 object
unless there is a valid conversion; that is, an object of type other
than "S4"
for which the S4 object is an extension, unless
argument complete
is 0
.
is.object
for a more general test; Methods
for general information on S4.
isS4(pi) # FALSE
isS4(getClass("MethodDefinition")) # TRUE