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)
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,
updateObjectFromSlots 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 argument
verbose causes a message to be
printed describing the action.
... are passed to
updateObject(list, ..., verbose=FALSE)
Visit each element in
updateObject(list[[elt]], ..., verbose=verbose).
updateObject(environment, ..., verbose=FALSE)
Visit each element in
updateObject(environment[[elt]], ..., verbose=verbose)
updateObject(formula, ..., verbose=FALSE)
Do nothing; the environment of the formula may be too general
R_GlobalEnv) to attempt an update.
updateObject(envRefClass, ..., verbose=FALSE)
Attempt to update objects from fields using a strategy like
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
definition. Under Method 1, the corresponding elements in
object are then updated (with
verbose=verbose)) and used as arguments to a call to
... replaced by slots from the original
object. If this fails, then Method 2 tries
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.