Hi, this is related to a question just raised on Bioconductor where one function sets the random seed internally but never resets it, which results in enforced down streams random samples being deterministic.
What is the best way to reset the random seed when you use set.seed() within a function? Is it still to re-assign '.Random.seed' in the global environment as following example illustrates? I'm not too kind of having function modifying the global environment, if not really necessary. foo <- function(n) { # Pop random seed if (!exists(".Random.seed", mode="numeric")) sample(NA); oldSeed <- .Random.seed; # Fixed seed to get reproducible samples here set.seed(0xbeef); x <- sample(5); # Proof of concept: 'x' should be the same all the time stopifnot(identical( x, as.integer(c(4,2,5,1,3)) )); # Push random seed to old state assign(".Random.seed", oldSeed, envir=globalenv()) # Continue as nothing happened sample(n); } > foo(5) [1] 4 2 3 5 1 > foo(5) [1] 4 2 3 1 5 > foo(5) [1] 5 3 1 4 2 > foo(5) [1] 5 3 2 4 1 > foo(5) Is this the way to do it? Thanks Henrik ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel