I agree with Simon that package startup messages
are often annoying and not often helpful. However,
I think they should be generated with
packageStartupMessage("your message")
instead of
cat("your message\n")
The former may be suppressed by wrapping the call to
library() with suppressPackageStartupMessages(), just
as messages generated by message("your message") may
be suppressed with suppressMessages().
You can suppress cat()'s output with capture.output()
but you may throw out things that should be seen.
E.g., if a package with a NAMESPACE file contains
the following .onXXX functions
% more testPkgWithNamespace/R/zzz.R
.onAttach <- function(...) {
cat("message from .onAttach via cat\n")
message("message from .onAttach via message")
packageStartupMessage("message from .onAttach via
packageStartupMessage\n")
}
.onLoad <- function(...) {
cat("message from .onLoad via cat\n")
message("message from .onLoad via message")
packageStartupMessage("message from .onLoad via
packageStartupMessage\n")
}
we get:
library(testPkgWithNamespace, lib.loc="Rlib")
message from .onLoad via cat
message from .onLoad via message
message from .onLoad via packageStartupMessage
message from .onAttach via cat
message from .onAttach via message
message from .onAttach via packageStartupMessage
>
detach("package:testPkgWithNamespace", unload=TRUE)
suppressMessages(library(testPkgWithNamespace, lib.loc="Rlib"))
message from .onLoad via cat
message from .onAttach via cat
>
detach("package:testPkgWithNamespace", unload=TRUE)
suppressPackageStartupMessages(library(testPkgWithNamespace,
lib.loc="Rlib"))
message from .onLoad via cat
message from .onLoad via message
message from .onAttach via cat
message from .onAttach via message
Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
-----Original Message-----
From: r-devel-bounces at r-project.org
[mailto:r-devel-bounces at r-project.org] On Behalf Of Simon Urbanek
Sent: Friday, June 10, 2011 12:10 PM
To: Nipesh Bajaj
Cc: r-devel at r-project.org
Subject: Re: [Rd] How to add a welcome message in Package development?
On Jun 10, 2011, at 2:54 PM, Nipesh Bajaj wrote:
Dear all, it is my first post in R-devel list, and hope that this is
the right place to ask question related to package development.
I have created my first package in Windows through the usual route.
Now I want to add some ***Welcome message*** as soon as
user loads my
package into their R console, using library() function. However I
could not figure out where and how should I add this
functionality in
entire package development procedure, and the "Writing R Exts"
document also seem to be mum on this issue.
Personally, I find "welcome messages" extremely annoying,
because if you load a dependency chain of 20 packages and
each has something silly to say, you get pages of completely
useless output (since you can't read all of them anyway) that
tend to interfere with automated scripts. Also anything
people tend to say in those is pertinent only once (when the
user first sees the message) so the message is pointless most
of the time that it's shown. But that's just my opinion.
That said, you can simply use cat() in .First.lib (if your
packages has no namespace) or .onAttach or .onLoad (if your
packages has a namespace).
Cheers,
Simon
Can somebody help me how to add this functionality in the
development
route of package. I believe this is possible as in many existing
packages that functionality is present.
Thanks,
______________________________________________
R-devel at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel______________________________________________
R-devel at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel