From simon.urbanek at r-project.org  Thu May 10 19:09:45 2012
From: simon.urbanek at r-project.org (Simon Urbanek)
Date: Thu, 10 May 2012 13:09:45 -0400
Subject: [Rd] setting global options for a package
In-Reply-To: <4FABC9AE.20103@yorku.ca>
References: <4FABC9AE.20103@yorku.ca>
Message-ID: <A487C006-8AA8-4914-A304-61729300C906@r-project.org>


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



[Rd] setting global options for a package
Simon Urbanek