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@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel >> >> > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel