【问题标题】:`sample()` gives different values with same `set.seed()``sample()` 使用相同的 `set.seed()` 给出不同的值
【发布时间】:2013-02-22 02:04:25
【问题描述】:

我正在创建一些随机样本并绘制它们并注意到一个奇怪的行为。加载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 有什么理由改变种子值吗?

【问题讨论】:

  • 这不是关于改变种子值 - 它是关于获得一个随机数(在你之前)。
  • 请注意,如果您测试了两个结果的可重复性,则强烈暗示ggplot2 正在使用随机种子做某事(可重复)。实验总是好的:-)

标签: r sample ggplot2 seeding


【解决方案1】:

我想我在其中一个 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 在启动或附加时提供任何提示,但如果它有该选项,那是有道理的。感谢您的澄清。
  • 嗯,你只有 10% 的时间会得到小费......而且我认为只有在最近的版本中。
  • 不应该给至少 15% 的小费吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-08
  • 1970-01-01
  • 1970-01-01
  • 2017-05-21
  • 1970-01-01
  • 2014-08-14
相关资源
最近更新 更多