| updateObject {BiocGenerics} | R Documentation |
Update an object to its current class definition
Description
updateObject is a generic function that returns an instance
of object updated to its current class definition.
Usage
updateObject(object, ..., verbose=FALSE)
## Related utilities:
updateObjectFromSlots(object, objclass=class(object)[[1L]], ...,
verbose=FALSE)
getObjectSlots(object)
Arguments
object |
Object to be updated for Object for slot information to be extracted from for
|
... |
Additional arguments, for use in specific |
verbose |
|
objclass |
Optional character string naming the class of the object to be created. |
Details
Updating objects is primarily useful when an object has been serialized (e.g., stored to disk) for some time (e.g., months), and the class definition has in the mean time changed. Because of the changed class definition, the serialized instance is no longer valid.
updateObject requires that the class of the returned object be
the same as the class of the argument object, and that the
object is valid (see validObject). By default,
updateObject has the following behaviors:
updateObject(ANY, ..., verbose=FALSE)-
By default,
updateObjectuses heuristic methods to determine whether the object should be the ‘new’ S4 type (introduced in R 2.4.0), but is not. If the heuristics indicate an update is required, theupdateObjectFromSlotsfunction tries to update the object. The default method returns the original S4 object or the successfully updated object, or issues an error if an update is required but not possible. The optional named argumentverbosecauses a message to be printed describing the action. Arguments...are passed toupdateObjectFromSlots. updateObject(environment, ..., verbose=FALSE)-
Visit each element in
environment, applyingupdateObject(environment[[elt]], ..., verbose=verbose) updateObject(formula, ..., verbose=FALSE)-
Do nothing; the environment of the formula may be too general (e.g.,
R_GlobalEnv) to attempt an update. updateObject(envRefClass, ..., verbose=FALSE)-
Attempt to update objects from fields using a strategy like
updateObjectFromSlotsMethod 1.
updateObjectFromSlots(object, objclass=class(object), ...,
verbose=FALSE) is a utility function that identifies the intersection
of slots defined in the object instance and objclass
definition. Under Method 1, the corresponding elements in
object are then updated (with updateObject(elt, ...,
verbose=verbose)) and used as arguments to a call to new(class,
...), with ... replaced by slots from the original
object. If this fails, then Method 2 tries new(class) and
assigns slots of object to the newly created instance.
getObjectSlots(object) extracts the slot names and contents from
object. This is useful when object was created by a class
definition that is no longer current, and hence the contents of
object cannot be determined by accessing known slots.
Value
updateObject returns a valid instance of object.
updateObjectFromSlots returns an instance of class
objclass.
getObjectSlots returns a list of named elements, with each
element corresponding to a slot in object.
See Also
-
updateObjectToin the Biobase package for updating an object to the class definition of a template (might be useful for updating a virtual superclass). -
validObjectfor testing the validity of an object. -
showMethodsfor displaying a summary of the methods defined for a given generic function. -
selectMethodfor getting the definition of a specific method. -
BiocGenerics for a summary of all the generics defined in the BiocGenerics package.
Examples
updateObject
showMethods("updateObject")
selectMethod("updateObject", "ANY") # the default method
library(Biobase)
## update object, same class
data(sample.ExpressionSet)
obj <- updateObject(sample.ExpressionSet)
setClass("UpdtA", representation(x="numeric"), contains="data.frame")
setMethod("updateObject", "UpdtA",
function(object, ..., verbose=FALSE)
{
if (verbose)
message("updateObject object = 'A'")
object <- callNextMethod()
object@x <- -object@x
object
}
)
a <- new("UpdtA", x=1:10)
## See steps involved
updateObject(a)
removeMethod("updateObject", "UpdtA")
removeClass("UpdtA")