`sample()`使用相同的`set.seed()`给出不同的值

时间:2013-03-07 01:48:00

标签: r sample ggplot2 seeding

我正在创建一些随机样本并绘制它们并注意到一种奇怪的行为。加载ggplot2后,采样值不同:

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

我可以很容易地避免这种行为,但ggplot2是否有任何理由改变种子值?

1 个答案:

答案 0 :(得分:15)

我想我在其中一个R聊天室看到了对此的一些讨论:ggplot2调用随机数生成器来决定是否/想要提供哪个提示。

特别是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)
}

随机生成的提示告诉您如何关闭提示,这有点有趣......