【问题标题】:Why does RStudio calls a random generator during View?为什么 RStudio 在查看期间会调用随机生成器?
【发布时间】:2016-05-23 03:40:52
【问题描述】:

我在 Mac 上使用 RStudio 0.99.467 和 R 3.2.2,我注意到 View 调用随机数生成器或类似的东西。以下是代码:

set.seed(1) # not needed when I run it on RStudio, but needed on R
rs <- .Random.seed
cat(76 + 8)
all(.Random.seed == rs)
# TRUE  -- because a simple function shouldn't change the random numbers
View(3)
all(.Random.seed == rs)
# FALSE -- ???

其实,唯一不同的是.Random.seed的第二个数字

all((.Random.seed == rs)[-2])
# TRUE

似乎总是增加 10 个单位

.Random.seed[2] - rs[2]
# 10

这是View 函数的预期行为还是我正在运行的版本中的错误?

【问题讨论】:

  • 您的代码不起作用,因为默认情况下未定义.Random.seed。您至少需要一个set.seed()
  • 通过您的编辑,您展示了一件有趣的事情。 RStudio 已经有一个 .Random.seed 集,控制台 R 中不是这种情况。所以我之前的评论在你的情况下是不正确的。
  • 虽然,我无法在 Ubuntu 14.04 上运行的以前版本的 RStudio (0.98.1103) 上重现此问题。
  • 更新我之前的评论。我可以用 RStudio 版本 0.99.878 重现这个
  • 这里不是很活跃。

标签: r rstudio


【解决方案1】:

这确实是意料之中的。 RStudio 在 0.99 中的数据查看器使用 R sample 函数为您的数据生成随机缓存键。 0.98 中的数据查看器没有这样做(它只是生成原始 HTML)。

我刚刚记录了一个问题,以便我们在未来的版本中消除这种副作用(我同意查看数据会更改您的随机种子是出乎意料的)。

【讨论】:

  • 有没有办法同时创建一个函数来解决这个问题?
  • 是的,您可以预先保存随机种子并在之后恢复它(参见set.seed)。顺便说一句,我们刚刚在 RStudio 本身中修复了该问题,因此如果您想尝试它,它将在下一个每日构建(0.99.1081 或更新版本)中。
猜你喜欢
  • 1970-01-01
  • 2010-10-30
  • 2017-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-17
  • 1970-01-01
相关资源
最近更新 更多