Hello,
I have a package, and inside of it I have a small function that selects a
random palette of colors for graphing purposes. It’s a large number of colors,
which is why I don’t manually select them, but I did want them to stay constant
so I set the seed before doing so. So I had a little function in my package
that does this:
.rcolors<-function(){
set.seed(23589)
x<-sample(colors()[-c(152:361)])
return(x)
}
massivePalette<-unique(c(bigPalette,.rcolors()))
Now that the sample function has been changed in R 3.6, I would need to use
`sample.kind=“Rounding”` to get the same set of colors as I had previously.
However, I don’t want to do that in my package, because that appears to change
the global environment sampling:
> RNGkind()
[1] "Mersenne-Twister" "Inversion" "Rejection"
> RNGkind(sample.kind="Rejection")
> x<-clusterExperiment:::.rcolors() #now I have changed the function so that
> sample.kind=“Rounding” — I’ve suppressed the warnings
> RNGkind()
[1] "Mersenne-Twister" "Inversion" "Rounding”
So I could do something like this:
.rcolors<-function(){
currentRNG<-RNGkind()
suppressWarnings(RNGkind(sample.kind="Rounding"))
set.seed(23589)
x<-sample(colors()[-c(152:361)])
#set it back to default
suppressWarnings(RNGkind(sample.kind=currentRNG[3]))
return(x)
}
But is there a way to change the random sampling in the function environment
and not change it in the global environment? (For this function, I can just
break down and accept that I will have different colors from this point on, but
I’d like to know more generally; especially since it means that my `fixed`
colors are not really fixed since they depend on the user’s setting of random
sampling techniques, which I hadn’t considered before).
All of the best,
Elizabeth Purdom
______________________________________________
[email protected] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.