Hi Bert,
Thanks for your response. What you suggest is more or less the fix I suggested 
in my email (my second version of .rcolors). I writing more because I was 
wondering if there was a better way to work with RNG that would avoid doing 
that. It doesn’t feel very friendly for my package to be making changes to the 
user’s global environment, even though I am setting them back (and if it 
weren’t for the fact that setting the new R 3.6 argument 
`sample.kind=“Rounding”` creates a warning, I wouldn’t have even realized I was 
affecting the user’s settings, so it seems potentially hazardous that packages 
could be changing users settings without them being aware of it). So I was 
wondering if there was a way to more fully isolate the command. 
Thanks,
Elizabeth

> On Apr 16, 2019, at 9:36 AM, Bert Gunter <bgunter.4...@gmail.com> wrote:
> 
> I think I'm missing something. Why does something like this not do what you 
> want:
> 
> > RNGkind()
> [1] "Mersenne-Twister" "Inversion"       
> > f <- function(){
> +    cur <- RNGkind(NULL)[1]
> +    RNGkind("Super-Duper")
> +    print(RNGkind())
> +    RNGkind(cur)
> + }
> > f()
> [1] "Super-Duper" "Inversion"  
> > RNGkind()
> [1] "Mersenne-Twister" "Inversion"
> 
> Cheers,
> Bert
> 
> Bert Gunter
> 
> "The trouble with having an open mind is that people keep coming along and 
> sticking things into it."
> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
> 
> 
> On Tue, Apr 16, 2019 at 9:13 AM Elizabeth Purdom <epur...@stat.berkeley.edu 
> <mailto:epur...@stat.berkeley.edu>> wrote:
> 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
> 
> ______________________________________________
> R-help@r-project.org <mailto:R-help@r-project.org> mailing list -- To 
> UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help 
> <https://stat.ethz.ch/mailman/listinfo/r-help>
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html 
> <http://www.r-project.org/posting-guide.html>
> and provide commented, minimal, self-contained, reproducible code.


        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org 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.

Reply via email to