r - set.seed() 在不同的操作系统上使用 RNGkind()
问题描述
这个问题与以下问题相似(但不一样!)...
set.seed 在不同版本的 R(和 Ubuntu)上是否一致?
...在RNGkind()
脚本中建议使用其中设置种子时确保 OS / R 版本之间的一致性set.seed()
但是,我发现为了在我正在使用的 unix 和 windows 系统上重现结果,我必须RNGkind(sample.kind = "Rounding")
在 Windows 上运行而不是在 unix 上运行时进行设置。如果我同时设置它,我将无法重现结果。
谁能解释系统中的这种差异?在不知道最终用户的操作系统的情况下,如何与 set.seed() 共享代码并确保其可重现?
非常感谢
编辑:我在使用该kmeans()
功能时遇到了这个问题。我set.seed(1)
在每次使用之前kmeans()
解决方案
R 中的随机数生成器在操作系统之间是一致的,但在 R 的历史中已经修改了几次,因此默认情况下在 R 版本之间不一致。但是,您始终可以通过设置set.seed()
和RNGkind()
匹配以前使用的内容来重现早期 R 版本的随机流。
该RNGversion()
函数会将较新版本的 R 设置为任何先前版本的默认值。如果查看它的源代码,您会发现默认值在 0.99、1.7.0 和 3.6.0 中发生了变化。
重现随机数结果的一个困难是人们并不总是报告RNGkind()
. 如果您更改为非默认设置并保存工作区,您将在重新加载时返回到该非默认设置。
一般来说,每个更改都是一种改进,因此使用类似代码RNGkind(sample.kind = "Rounding")
的建议可能是不好的建议:它恢复了在 R 3.6.0 中默认修复的错误行为。(尽管这是一个非常微妙的错误,除非您使用的sample()
功能非常庞大。)
通常最好鼓励人们使用 R 的最新版本(偶尔 xy0 版本除外,它有时会引入新的错误)。保存工作区也是一个坏主意,因为这会导致 R 保留旧的或非默认的 RNG。
推荐阅读
- javascript - 如何在 React 中获取 JSON 输入并将其转换为 const 数组?
- swift - 如何在 Swift 中将 API 调用中的数据添加到 tableviewcell
- python - Python class not able to handle exception
- javascript - Does not use passive listeners to improve scrolling performance from materialize-1.0.0.min.js
- sql - How long can we keep IMPALA JDBC connection open?
- reactjs - 如何将从 Firestore 获取的数据作为道具传递给组件
- javascript - I want to hide the parent div if child div is empty as Filter results empty
- reactjs - After infinite loading using useSWRInfinite, the css is not working for some elements
- c# - How can I have multiple database instances for component tests
- sql - 我想使用字符串中的正则表达式函数在第二个点(。)之前提取文本,例如: