[R-pkg-devel] Options "reset" when options(opts)

Greg Jefferis je||er|@ @end|ng |rom gm@||@com
Thu Jul 11 08:49:23 CEST 2024


Dear John,

You need to collect the return value when setting options. This will include an explicit NULL value for an option that was previously NULL. 

Best,

Greg Jefferis.

options(digits.secs = NULL)

noset2 = function() {
  opts <- options(digits.secs = 3)
  on.exit(options(opts))
  print(opts)
}

> getOption("digits.secs")
NULL
 
> noset2()
$digits.secs
NULL

> getOption("digits.secs")
NULL

Gregory Jefferis
Division of Neurobiology
MRC Laboratory of Molecular Biology
Francis Crick Avenue
Cambridge Biomedical Campus
Cambridge, CB2 OQH, UK

http://www2.mrc-lmb.cam.ac.uk/group-leaders/h-to-m/g-jefferis
http://jefferislab.org
https://www.zoo.cam.ac.uk/research/groups/connectomics


> On 11 Jul 2024, at 06:08, John Muschelli <muschellij2 using gmail.com> wrote:
> 
> When setting options in a function, I have always used the following:
>  opts <- options()
>  on.exit(options(opts), add = TRUE)
> and assumed it "reset" options to what they were prior to running the
> function.  But for some options that are set to NULL, it does not seem to
> reset them.  Specifically, I have found digits.secs to be set after this
> simple example below.  Is this expected behavior/documented?  Overall, this
> specific example (the one I encountered in the wild) is not that harmful,
> but I wanted to ask before I set a fix for this in our work
> 
> noset = function() {
>  opts = options()
>  print(opts$digits.secs)
>  on.exit(options(opts))
>  options(digits.secs = 3)
> }
> getOption("digits.secs")
> #> NULL
> noset()
> #> NULL
> getOption("digits.secs")
> #> [1] 3
> 
> 
> John Muschelli, PhD
> Associate Research Professor
> Department of Biostatistics
> Johns Hopkins Bloomberg School of Public Health
> 
> [[alternative HTML version deleted]]
> 
> ______________________________________________
> R-package-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel



More information about the R-package-devel mailing list