From friendly at yorku.ca  Thu May 10 15:59:10 2012
From: friendly at yorku.ca (Michael Friendly)
Date: Thu, 10 May 2012 09:59:10 -0400
Subject: [Rd] setting global options for a package
Message-ID: <4FABC9AE.20103@yorku.ca>

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"))
}

My function could then use

foo <- function(x, getOption("heplot.colors"), ...)  {}


-- 
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



[Rd] setting global options for a package
Michael Friendly