is(object, class2) extends(class1, class2, maybe = TRUE, fullInfo = FALSE) setIs(class1, class2, test = NULL, coerce = NULL, replace = NULL, by = character(), where = topenv(parent.frame()), classDef = getClass(class1, TRUE, where = where), extensionObject = NULL, doComplete = TRUE)
object | any object. |
class1 | a character string. The name of a class or a class representation object. |
class2 | a character string. The name of a class or a class representation object. If you omit this argument in extends or is, these functions return a character vector of all the known superclasses for which the extends or is relation holds. |
maybe | this argument is unimplemented. If given, it generates a warning. |
fullInfo | this argument is unimplemented. If given, it generates a warning. |
test | an optional function defining a conditional relationship between class1 and class2. If this is given, it should be a function with argument (object), and it will be called by the is function to test whether an object should be considered a member of class2. |
coerce | an optional function defining how to coerce an object with class class1 to class2. If this is given, it should be a function with arguments (from, strict), and it will be called by the as function to perform this coercion unless an explicit coerce method is defined. |
replace | an optional function defining how to replace parts of an object with class class1 with parts of an object with class class2. If given, it should be a function with arguments (from, to, value), and it will be called by the as<- function to perform this coercion unless an explicit coerce<- method is defined. |
by | this argument is unimplemented. If given, it generates a warning. |
where | the environment to store the class definition. |
classDef | this argument is unimplemented. If given, it generates a warning. |
extensionObject | this argument is unimplemented. If given, it generates a warning. |
doComplete | this argument is unimplemented. If given, it generates a warning. |
is | returns TRUE if object has an is relation to class2. That is, if object has (or inherits from) class class2. Otherwise, it returns FALSE. If class2 is omitted, is returns a character vector of the known superclasses for which the relation holds. |
extends | returns TRUE if class1 extends class2. Otherwise, it returns FALSE. If class2 is omitted, extends returns a character vector of the known superclasses for which the relation holds. |
setIs | invisibly returns the modified class definition of class1. |
x <- runif(6) class(x) # "numeric" is(x, "double") # FALSE -- because "double" is not a defined class is.double(x) # TRUE is(x, "numeric") # TRUE is(x) # list all classes a "numeric" object could inherit from.x <- structure(1:9, dim=c(3L,3L), class="xyz") class(x) # "xyz" is(x, "matrix") # FALSE -- because x has class "xyz", not "matrix" is.matrix(x) # TRUE
is(letters) # list all the classes a "character" object could inherit from. extends("matrix", "array") # TRUE
# create two unrelated classes setClass("square", representation(x="numeric")) setClass("rectangle", representation(x="numeric", y="numeric")) n <- new("rectangle", x = 6, y = 7) m <- new("square", x = 5) # create "area" method for class "rectangle" setGeneric("area", function(object) standardGeneric("area")) setMethod("area", "rectangle", function(object) if(is.element("y", slotNames(class(object)))) { object@x * object@y } else { (object@x)^2 } ) # area(m) gives an error since "m" doesn't inherit from class "rectangle" yet area(n) # 42 area(m) # Error # Setup the relation that class "square" inherits from "rectangle". setIs("square", "rectangle") # now the methods for "rectangle" can be inherited by "square" area(n) # 42 area(m) # 25