Library/package development - message when loading
is there any way to display a message when a user loads library(myCustomLibrary)
?
Upon loading, I want to disp开发者_运维技巧lay a message that tells the user how to run all the test functions.
Quick points (and updated edit in 2021):
while if your package has a NAMESPACE, then
.onLoad()
is where you used to do this: but.onLoad()
has been required to be 'silent'if your package has a NAMESPACE, then
.onAttach()
is where can call, preferably viapackageStartupMessage()
(which can be suppressed wherecat()
ormessage()
cannotif your package does not have NAMESPACE, then you must add one now (and
.First.lib()
was where you used to do this) -- NAMESPACES have been mandatory for a few years noweither way, use
packageStartupMessage()
instead ofcat()
so that users have a choice of suppressing this.
Yes. You can use the .onLoad
, .onAttach
, or .First.lib
functions to do whatever you want when the package is loaded. I suggest looking at the help for those functions. You would use .onLoad
with a namespace, and .First.lib
without.
One convention is that people will frequently put these commands in a separate zzz.R
file, which is just used for package related code.
Updated answer (2019):
In the help section "Good practice" in ?.onAttach
the recommendation is now:
Loading a namespace [= in
.onLoad
] should where possible be silent, with startup messages given by .onAttach. These messages (and any essential ones from .onLoad) should usepackageStartupMessage
so they can be silenced where they would be a distraction.
R CMD CHECK
will complain if .onLoad
is not silent...
精彩评论