[R-pkg-devel] Options "reset" when options(opts)
Vladimir Dergachev
vo|ody@ @end|ng |rom m|nd@pr|ng@com
Thu Jul 11 20:22:07 CEST 2024
On Thu, 11 Jul 2024, David Hugh-Jones wrote:
> This surprised me, even though it shouldn’t have done. (My false internal
> model of the world was that oo <- options(); … options(oo) would overwrite
> the entire options list with the old values.) I wonder if it would be worth
> pointing out explicitly in ?options.
Arguably, it would be nice to have a parameter like "reset", so
that one can call
options(oo, reset=TRUE)
and any options not explicitly passed by oo are set to NULL.
This way there are two modes of operation - bulk setting of subset of
options with reset=FALSE, and restoring full options set with reset=TRUE.
best
Vladimir Dergachev
>
> Writing: wyclif.substack.com
> Book: www.wyclifsdust.com
>
>
> On Thu, 11 Jul 2024 at 08:03, Greg Jefferis <jefferis using gmail.com> wrote:
>
>> 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
>>
>> ______________________________________________
>> R-package-devel using r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>>
>
> [[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