{SeedMaker} is a mechanism for easily generating and organizing a collection of seeds from a single seed, which may be subsequently used to ensure reproducibility in processes/pipelines that utilize multiple random components (e.g., trial simulation).
Install the released version of {SeedMaker} from CRAN:
install.packages("SeedMaker")
Or install the development version of {SeedMaker} from GitHub with:
# install.packages("remotes")
::install_github("hdhshowalter/SeedMaker") remotes
The following calls are representative of the most common ways to
engage seed_maker()
:
library(SeedMaker)
#simple call
seed_maker(
seed = 1234,
level_names = "sim",
n_per_level = 5
)#> $sim1
#> [1] 761680
#>
#> $sim2
#> [1] 630678
#>
#> $sim3
#> [1] 304108
#>
#> $sim4
#> [1] 932745
#>
#> $sim5
#> [1] 295846
#slightly more complex call
seed_maker(
seed = 1234,
level_names = c("sim", "replicate"),
n_per_level = c(5, 10)
)#> $sim1
#> $sim1$replicate1
#> [1] 241906
#>
#> $sim1$replicate2
#> [1] 928350
#>
#> $sim1$replicate3
#> [1] 847527
#>
#> $sim1$replicate4
#> [1] 251548
#>
#> $sim1$replicate5
#> [1] 379402
#>
#> $sim1$replicate6
#> [1] 894769
#>
#> $sim1$replicate7
#> [1] 223940
#>
#> $sim1$replicate8
#> [1] 325385
#>
#> $sim1$replicate9
#> [1] 766829
#>
#> $sim1$replicate10
#> [1] 904458
#>
#>
#> $sim2
#> $sim2$replicate1
#> [1] 548592
#>
#> $sim2$replicate2
#> [1] 681521
#>
#> $sim2$replicate3
#> [1] 273200
#>
#> $sim2$replicate4
#> [1] 819616
#>
#> $sim2$replicate5
#> [1] 493964
#>
#> $sim2$replicate6
#> [1] 997086
#>
#> $sim2$replicate7
#> [1] 271560
#>
#> $sim2$replicate8
#> [1] 284789
#>
#> $sim2$replicate9
#> [1] 676748
#>
#> $sim2$replicate10
#> [1] 251192
#>
#>
#> $sim3
#> $sim3$replicate1
#> [1] 242055
#>
#> $sim3$replicate2
#> [1] 599300
#>
#> $sim3$replicate3
#> [1] 364599
#>
#> $sim3$replicate4
#> [1] 82239
#>
#> $sim3$replicate5
#> [1] 978159
#>
#> $sim3$replicate6
#> [1] 606003
#>
#> $sim3$replicate7
#> [1] 208137
#>
#> $sim3$replicate8
#> [1] 315461
#>
#> $sim3$replicate9
#> [1] 186198
#>
#> $sim3$replicate10
#> [1] 549779
#>
#>
#> $sim4
#> $sim4$replicate1
#> [1] 542579
#>
#> $sim4$replicate2
#> [1] 802509
#>
#> $sim4$replicate3
#> [1] 411648
#>
#> $sim4$replicate4
#> [1] 945114
#>
#> $sim4$replicate5
#> [1] 842371
#>
#> $sim4$replicate6
#> [1] 967436
#>
#> $sim4$replicate7
#> [1] 686936
#>
#> $sim4$replicate8
#> [1] 386971
#>
#> $sim4$replicate9
#> [1] 866601
#>
#> $sim4$replicate10
#> [1] 409145
#>
#>
#> $sim5
#> $sim5$replicate1
#> [1] 707912
#>
#> $sim5$replicate2
#> [1] 981104
#>
#> $sim5$replicate3
#> [1] 257273
#>
#> $sim5$replicate4
#> [1] 183803
#>
#> $sim5$replicate5
#> [1] 164537
#>
#> $sim5$replicate6
#> [1] 532250
#>
#> $sim5$replicate7
#> [1] 622868
#>
#> $sim5$replicate8
#> [1] 176299
#>
#> $sim5$replicate9
#> [1] 709384
#>
#> $sim5$replicate10
#> [1] 166772
#slightly more complex call with non-indexed names at level 2
seed_maker(
seed = 1234,
level_names = list("sim", c("component_a", "component_b", "component_c")),
n_per_level = c(5, 3)
)#> $sim1
#> $sim1$component_a
#> [1] 241906
#>
#> $sim1$component_b
#> [1] 928350
#>
#> $sim1$component_c
#> [1] 847527
#>
#>
#> $sim2
#> $sim2$component_a
#> [1] 548592
#>
#> $sim2$component_b
#> [1] 681521
#>
#> $sim2$component_c
#> [1] 273200
#>
#>
#> $sim3
#> $sim3$component_a
#> [1] 242055
#>
#> $sim3$component_b
#> [1] 599300
#>
#> $sim3$component_c
#> [1] 364599
#>
#>
#> $sim4
#> $sim4$component_a
#> [1] 542579
#>
#> $sim4$component_b
#> [1] 802509
#>
#> $sim4$component_c
#> [1] 411648
#>
#>
#> $sim5
#> $sim5$component_a
#> [1] 707912
#>
#> $sim5$component_b
#> [1] 981104
#>
#> $sim5$component_c
#> [1] 257273
#simple call that generates seed values between 1 and 100 instead of between
#1 and 1000000
seed_maker(
seed = 1234,
level_names = "sim",
n_per_level = 5,
sample_vector = list(1:100)
)#> $sim1
#> [1] 28
#>
#> $sim2
#> [1] 80
#>
#> $sim3
#> [1] 22
#>
#> $sim4
#> [1] 9
#>
#> $sim5
#> [1] 5
#simple call that returns named vector instead of list
seed_maker(
seed = 1234,
level_names = "sim",
n_per_level = 5,
flatten = TRUE
)#> sim1 sim2 sim3 sim4 sim5
#> 761680 630678 304108 932745 295846