2013-03-07 9 views
14

Tworzyłem losowe próbki i nanosząc je zauważyłem dziwne zachowanie. Próbą wartości różniły się po załadowaniu ggplot2:`sample()` daje różne wartości z tym samym `set.seed()`

set.seed(111) 
library(ggplot2) 
sample(1:10, 10) 
# [1] 8 4 5 3 7 1 6 2 10 9 

set.seed(111) 
sample(1:10, 10) 
# [1] 6 7 3 4 8 10 1 2 9 5 

mogę uniknąć tego zachowania dość łatwo, ale jest jakiś powód, dla ggplot2 zmienić wartość początkową?

+0

To nie jest temat zmiany seed value - chodzi o uzyskanie losowej liczby (przed tobą). –

+0

Należy zauważyć, że gdybyś przetestował powtarzalność obu wyników, byłaby to mocna wskazówka, że ​​'ggplot2' robił coś (powtarzalnego) z losowym nasieniem. Eksperymenty są zawsze dobre :-) –

Odpowiedz

15

Myślę, że widziałem dyskusję na ten temat w jednym z pokojów czatowych R: ggplot2 dzwoni do generatora liczb losowych, aby zdecydować, czy wskazówka ma być oferowana.

W szczególności, jest to ggplot2:::.onAttach:

function (...) 
{ 
    if (!interactive() || stats::runif(1) > 0.1) 
     return() 
    tips <- c("Need help? Try the ggplot2 mailing list: http://groups.google.com/group/ggplot2.", 
     paste("Find out what's changed in ggplot2 with\n", "news(Version == \"", 
      utils::packageVersion("ggplot2"), "\", package = \"ggplot2\")", 
      sep = ""), "Use suppressPackageStartupMessages to eliminate package startup messages.") 
    tip <- sample(tips, 1) 
    packageStartupMessage(tip) 
} 

To trochę zabawne, że jeden z losowo generowanych wskazówek powie Ci, jak wyłączyć wskazówki ...

+0

Nigdy nie spotkałem się z ggplot2 udzielając jakichkolwiek wskazówek przy uruchamianiu lub dołączaniu, ale ma to sens, jeśli ma taką opcję. Dziękuję za wyjaśnienie. – N8TRO

+0

Cóż, dostajesz tylko wskazówkę w 10% przypadków ... i tylko w ostatnich wersjach, tak myślę. –

+4

Czy nie powinien dawać napiwku co najmniej 15%? –