【问题标题】:R set.seed does not produce consistent resultsR set.seed 不会产生一致的结果
【发布时间】:2017-08-18 21:12:35
【问题描述】:

我正在使用一个主 R 函数从不同的脚本调用一系列 R 函数。为了重现结果,我在我的主脚本的开头set.seed。在代码中,sample() 函数从function_8 中的dataframefunction_6 中的rand() 中随机选择几行。所以一个简单的工作流程如下:

### Main R Function
library(dplyr)
set.seed(111)

### Begin calling other R scripts
output_1 <- function_1(...)
...
output_10 <- function_10(...)

### End Main R Function

最近,我意识到如果我对不包含任何随机化的function_9 进行更改。从function_8 生成的随机数发生变化。例如,

  • sample() 中的 function_8 将在更新 function_9 之前获得第 2、15、23、50、54 行。
  • sample() in function_8 将在更新 function_9 后获得第 23、44、50、95、98 行
  • 但是,可以通过启动新的 R 会话来重现结果。

所以,我想知道是否有人可以就在这种情况下如何正确set.seed 给我一些建议?提前谢谢!

更新

根据已删除的评论,我将种子编号更改为 123,这会产生一组一致的结果。但是,如果有人可以提供任何深入的解释,我将不胜感激!

【问题讨论】:

  • 您能否提供一个可重现的示例,示例 function_1 到 10(或至少 6、8 和 9)?

标签: r random


【解决方案1】:

也许系列 111 只是具有相同的字符而不会改变功能 8,您可能想要生成一个基于时间的随机种子,这里是 a previous answer,它可以帮助您使用系统时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    相关资源
    最近更新 更多