getHook(hookName)
setHook(hookName, value,
action = c("append", "prepend", "replace"))packageEvent(pkgname,
event = c("onLoad", "attach", "detach", "onUnload"))
action = "replace", NULL getHook function, a list of functions (possibly empty).
For setHook function, no return value.
For packageEvent, the derived hook name (a character string).setHook provides a general mechanism for users to register
hooks, a list of functions to be called from system (or user)
functions. The initial set of hooks was associated with events on
packages/namespaces: these hooks are named via calls to
packageEvent. To remove a hook completely, call setHook(hookName, NULL, "replace"). When an R package is attached by library or loaded by
other means, it can call initialization code. See
.onLoad for a description of the package hook functions
called during initialization. Users can add their own initialization
code via the hooks provided by setHook(), functions which will
be called as funname(pkgname, pkgpath) inside a
try call. The sequence of events depends on which hooks are defined, and whether
a package is attached or just loaded. In the case where all hooks
are defined and a package is attached, the order of initialization
events is as follows:
.onLoad function is run.
setLoadAction are run.
"onLoad" hook is run.
.onAttach function is run.
"attach" hook is run.
"detach" hook is run.
.Last.lib function is run.
"onUnload" hook is run.
.onUnload function is run.
getHook, but the "detach" and "onUnload" hooks
are run in reverse order so the default for package events is to add
hooks ‘inside’ existing ones. The hooks are stored in the environment .userHooksEnv in the
base package, with ‘mangled’ names.library, detach, loadNamespace. See ::
for a discussion of the double and triple colon operators. Other hooks may be added later: functions plot.new and
persp already have them.setHook(packageEvent("grDevices", "onLoad"),
function(...) grDevices::ps.options(horizontal = FALSE))
Run the code above in your browser using DataLab