`sample()` 在相同的 `set.seed()` 下会给出不同的值

15

我正在创建一些随机样本并绘制它们,注意到了一个奇怪的行为。在加载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更改种子值的原因是什么?


这不是关于改变种子值的问题 - 而是关于获取一个随机数(在你之前)。 - user166390
请注意,如果您测试了两个结果的可重复性,那么这将是一个强烈的提示,表明 ggplot2 正在使用随机种子进行某些操作(可重复)。实验总是好的 :-) - Carl Witthoft
1个回答

16

我记得在 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)
}

"

有趣的是,随机生成的提示之一告诉你如何关闭提示...

"

我从未遇到过ggplot2在启动或附加时提供任何提示,但如果它有该选项,那就很合理。感谢澄清。 - N8TRO
嗯,你只有10%的机会得到提示……而且我认为这只在最近的版本中才有。 - Ben Bolker
5
应该至少给15%的小费吗? - Josh O'Brien

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接