setting global options for a package
Or slightly more conveniently, use the default value of getOption() to return the vector
of color names if the option is not set, e.g.
foo <- function(x, heplot.colors = getOption("heplot.colors",
c("red", "blue", "black", "darkgreen", "brown", "darkgray")), ...) {
D.
On 5/10/12 10:09 AM, Simon Urbanek wrote:
On May 10, 2012, at 9:59 AM, Michael Friendly wrote:
This may be elementary, but I can't find an answer: How can I set up global options for
some specific arguments to functions in a package which can be easily changed by the user?
This question relates to the selection of colors used in functions in several packages (heplots,
genridge), where I want to provide reasonable default values for plots, but allow users to
change those defaults globally for all plots produced with my functions.
One solution is to use palette() for the default, as in
foo <- function(x, col=palette(), ...) {}
but the standard palette is not appropriate for my use, and I'd rather not hijack more typical uses
Another is to use an explicit list of colors for default, as in
bar <- function(x, col=c('red', 'blue', 'brown', 'darkgreen', ...), ...) {}
but this must be overridden each time by someone to wants to change the defaults.
options() seems like the way to go, but I'm not sure how to implement this. If I use
a .onLoad function to set some options, will these be created in the global environment?
If not, how to make them so?
.onLoad <- function() {
options(heplot.colors =
c("red", "blue", "black", "darkgreen", "darkcyan","magenta", "brown","darkgray"))
You certainly don't want to do that - it would override user's setting and thus defeat the whole purpose of options.
}
My function could then use
foo <- function(x, getOption("heplot.colors"), ...) {}
You can always do that:
foo <- function(x, heplot.colors = getOption("heplot.colors"), ...) {
if (is.null(heplot.colors)) heplot.colors <- c("red", "blue", "black", "darkgreen", "darkcyan","magenta", "brown","darkgray")
Cheers,
Simon
-- Michael Friendly Email: friendly AT yorku DOT ca Professor, Psychology Dept. York University Voice: 416 736-5115 x66249 Fax: 416 736-5814 4700 Keele Street Web: http://www.datavis.ca Toronto, ONT M3J 1P3 CANADA
______________________________________________ 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