[Bioc-devel] Use set.seed inside function

Meng, Chen mengchen18 @end|ng |rom gm@||@com
Tue Nov 30 08:54:02 CET 2021


Thanks, and good to know the with_seed function.

best,
Chen

On 29.11.21 22:43, Henrik Bengtsson wrote:
> The easiest is to use withr::with_seed(), e.g.
>
>> withr::with_seed(seed = 42L, randomcoloR::distinctColorPalette(6))
> [1] "#A0E1BC" "#B8E363" "#D686BE" "#DEA97F" "#B15CD8" "#A2B9D5"
>> withr::with_seed(seed = 42L, randomcoloR::distinctColorPalette(6))
> [1] "#A0E1BC" "#B8E363" "#D686BE" "#DEA97F" "#B15CD8" "#A2B9D5"
>
> It works by undoing globalenv()$.Random.seed after the random number
> generator has updated.  If you want to roll your own version of this,
> you need to make sure to handle the special case when there is no
> pre-existing .Random.seed in globalenv().
>
> Regarding packages and functions changing the random seed via a
> set.seed() [without undoing it]: this should *never* be done, because
> it will wreak havoc on a analyses and studies that rely on random
> numbers.  My rule of thumb: only the end-user should be allowed to use
> set.seed(), which should typically be done at the top of their R
> scripts.
>
> /Henrik
>
> On Mon, Nov 29, 2021 at 1:23 PM Meng Chen <mengchen18 using gmail.com> wrote:
>> Thanks. I think it may work in theory, generating "enough" distinct colors
>> is fairly easy. Then the problem will be how to find a subset of colors of
>> size n, and the selected colors are still most distinguishable. I think I
>> will do this with my eyes if no other methods, a tedious job.
>> But at least for my curiosity, I still want to know if there are other ways
>> to achieve this. I feel like 80% of people who use the distinctColorPallete
>> function actually don't need the "random" feature :) Thanks.
>>
>> On Mon, Nov 29, 2021 at 9:39 PM James W. MacDonald <jmacdon using uw.edu> wrote:
>>
>>> It appears that you don't actually want random colors, but instead you
>>> want the same colors each time. Why not just generate the vector of 'random
>>> distinct colors' one time and save the vector of colors?
>>>
>>> -----Original Message-----
>>> From: Bioc-devel <bioc-devel-bounces using r-project.org> On Behalf Of Meng Chen
>>> Sent: Monday, November 29, 2021 3:21 PM
>>> To: bioc-devel using r-project.org
>>> Subject: [Bioc-devel] Use set.seed inside function
>>>
>>> Dear BioC team and developers,
>>>
>>> I am using BiocCheck to check my package, it returns a warning:
>>> " Remove set.seed usage in R code"
>>>
>>> I am using "set.seed" inside my functions, before calling function
>>> distinctColorPalette (randomcoloR package) in order to generate
>>> reproducible "random distinct colors". So what would be the best practice
>>> to solve this warning? I think 1. use set.seed and don't change anything.
>>> 2. use the set.seed function, but include something like below inside the
>>> function *gl.seed <- .Random.seed* *on.exit(assign(".Random.seed", gl.seed,
>>> envir = .GlobalEnv))* 3. use some other functions for the purpose
>>>
>>> Any suggestions will be appreciated. Thanks.
>>> --
>>> Best Regards,
>>> Chen
>>>
>>>          [[alternative HTML version deleted]]
>>>
>>> _______________________________________________
>>> Bioc-devel using r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/bioc-devel
>>>
>>
>> --
>> Best Regards,
>> Chen
>>
>>          [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> Bioc-devel using r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/bioc-devel



More information about the Bioc-devel mailing list