updateObject
Update an object to its current class definition
updateObject
is a generic function that returns an instance
of object
updated to its current class definition.
- Keywords
- methods
Usage
updateObject(object, ..., verbose=FALSE)
## Related utilities:
updateObjectFromSlots(object, objclass=class(object), ..., verbose=FALSE)
getObjectSlots(object)
Arguments
- object
-
Object to be updated for
updateObject
andupdateObjectFromSlots
.Object for slot information to be extracted from for
getObjectSlots
. - ...
-
Additional arguments, for use in specific
updateObject
methods. - verbose
-
TRUE
orFALSE
, indicating whether information about the update should be reported. Usemessage
to report this information. - 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,
updateObject
uses 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, theupdateObjectFromSlots
function 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 argumentverbose
causes a message to be printed describing the action. Arguments...
are passed toupdateObjectFromSlots
.
updateObject(list, ..., verbose=FALSE)
list
, applying
updateObject(list[[elt]], ..., verbose=verbose)
.
updateObject(environment, ..., verbose=FALSE)
environment
, applying
updateObject(environment[[elt]], ..., verbose=verbose)
updateObject(formula, ..., verbose=FALSE)
R_GlobalEnv
) to attempt an update.
updateObject(envRefClass, ..., verbose=FALSE)
updateObjectFromSlots
Method 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
-
updateObjectTo
in the Biobase package for updating an object to the class definition of a template (might be useful for updating a virtual superclass). -
validObject
for testing the validity of an object. -
showMethods
for displaying a summary of the methods defined for a given generic function. -
selectMethod
for 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")