Hello When loading a package, I'm wondering if it's frowned upon for the package to alter the state of the random number generator? I guess not, since the parallel package does it? > set.seed(6860) > old.seed <- .GlobalEnv$.Random.seed > library(parallel) > new.seed <- .GlobalEnv$.Random.seed > identical(old.seed, new.seed) [1] FALSE I ask because, I found myself writing a custom wrapper around library() to restore the original RNG state, in order to increase reproducibility. But now wondering if others would welcome such a feature to be added to base R? Either something very general like preserveRNGstate(library(parallel)) or perhaps an specific enhancement to library itself? Regards Ben
Hi, On 2017-02-07 13:12, Benjamin Tyner wrote:> Hello > > When loading a package, I'm wondering if it's frowned upon for the > package to alter the state of the random number generator? I guess not, > since the parallel package does it?Surprisingly it is not frowned upon, but it *is* a nuisance. I brought it up a couple of years ago http://r.789695.n4.nabble.com/parallel-package-changes-Random-seed-td4686321.html along with a patch, but was told off...> > > set.seed(6860) > > old.seed <- .GlobalEnv$.Random.seed > > library(parallel) > > new.seed <- .GlobalEnv$.Random.seed > > identical(old.seed, new.seed) > [1] FALSE > > I ask because, I found myself writing a custom wrapper around library() > to restore the original RNG state, in order to increase reproducibility. > But now wondering if others would welcome such a feature to be added to > base R? Either something very general like > > preserveRNGstate(library(parallel)) > > or perhaps an specific enhancement to library itself?I would very much welcome a change, but in the light of things it doesn't seem likely. Henric Winell> > Regards > Ben > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >
>>>>> Henric Winell <nilsson.henric at gmail.com> >>>>> on Tue, 7 Feb 2017 13:37:42 +0100 writes:> Hi, On 2017-02-07 13:12, Benjamin Tyner wrote: >> Hello >> >> When loading a package, I'm wondering if it's frowned >> upon for the package to alter the state of the random >> number generator? I guess not, since the parallel package >> does it? > Surprisingly it is not frowned upon, but it *is* a > nuisance. I brought it up a couple of years ago > http://r.789695.n4.nabble.com/parallel-package-changes-Random-seed-td4686321.html > along with a patch, but was told off... >> >> > set.seed(6860) > old.seed <- .GlobalEnv$.Random.seed > >> library(parallel) > new.seed <- .GlobalEnv$.Random.seed > >> identical(old.seed, new.seed) [1] FALSE >> >> I ask because, I found myself writing a custom wrapper >> around library() to restore the original RNG state, in >> order to increase reproducibility. But now wondering if >> others would welcome such a feature to be added to base >> R? Either something very general like >> >> preserveRNGstate(library(parallel)) >> >> or perhaps an specific enhancement to library itself? > I would very much welcome a change, but in the light of > things it doesn't seem likely. > Henric Winell Sometimes things change ... and not always for the worse. I've found a version of your original patch idea which is very efficient nice (in my eyes) and still leaves system.time(loadNamespace("parallel")) to round to 0, i.e. needing less than 1 ms. --> in R-devel svn rev 72136 Martin