Avraham Adler
2021-Sep-17 10:06 UTC
[Rd] WISH: set.seed(seed) to produce error if length(seed) != 1 (now silent)
Hi, Henrik. I?m curious, other than proper programming practice, why? Avi On Fri, Sep 17, 2021 at 11:48 AM Henrik Bengtsson < henrik.bengtsson at gmail.com> wrote:> Hi, > > according to help("set.seed"), argument 'seed' to set.seed() should be: > > a single value, interpreted as an integer, or NULL (see ?Details?). > > From code inspection (src/main/RNG.c) and testing, it turns out that > if you pass a 'seed' with length greater than one, it silently uses > seed[1], e.g. > > > set.seed(1); sum(.Random.seed) > [1] 4070365163 > > set.seed(1:3); sum(.Random.seed) > [1] 4070365163 > > set.seed(1:100); sum(.Random.seed) > [1] 4070365163 > > I'd like to suggest that set.seed() produces an error if length(seed) > > 1. As a reference, for length(seed) == 0, we get: > > > set.seed(integer(0)) > Error in set.seed(integer(0)) : supplied seed is not a valid integer > > /Henrik > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >-- Sent from Gmail Mobile [[alternative HTML version deleted]]
GILLIBERT, Andre
2021-Sep-17 10:55 UTC
[Rd] WISH: set.seed(seed) to produce error if length(seed) != 1 (now silent)
Hello, A vector with a length >= 2 to set.seed would probably be a bug. An error message will help the user to fix his R code. The bug may be accidental or due to bad understanding of the set.seed function. For instance, a user may think that the whole state of the PRNG can be passed to set.seed. The "if" instruction, emits a warning when the condition has length >= 2, because it is often a bug. I would expect a warning or error with set.seed(). Validating inputs and emitting errors early is a good practice. Just my 2 cents. Sincerely. Andre GILLIBERT -----Message d'origine----- De?: R-devel [mailto:r-devel-bounces at r-project.org] De la part de Avraham Adler Envoy??: vendredi 17 septembre 2021 12:07 ??: Henrik Bengtsson Cc?: R-devel Objet?: Re: [Rd] WISH: set.seed(seed) to produce error if length(seed) != 1 (now silent) Hi, Henrik. I?m curious, other than proper programming practice, why? Avi On Fri, Sep 17, 2021 at 11:48 AM Henrik Bengtsson < henrik.bengtsson at gmail.com> wrote:> Hi, > > according to help("set.seed"), argument 'seed' to set.seed() should be: > > a single value, interpreted as an integer, or NULL (see ?Details?). > > From code inspection (src/main/RNG.c) and testing, it turns out that > if you pass a 'seed' with length greater than one, it silently uses > seed[1], e.g. > > > set.seed(1); sum(.Random.seed) > [1] 4070365163 > > set.seed(1:3); sum(.Random.seed) > [1] 4070365163 > > set.seed(1:100); sum(.Random.seed) > [1] 4070365163 > > I'd like to suggest that set.seed() produces an error if length(seed) > > 1. As a reference, for length(seed) == 0, we get: > > > set.seed(integer(0)) > Error in set.seed(integer(0)) : supplied seed is not a valid integer > > /Henrik > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >-- Sent from Gmail Mobile [[alternative HTML version deleted]] ______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel