R ignora la configuración .Random.seed
dentro de una aplicación. Sin embargo, usar set.seed
funciona bien.¿Cómo puedo obtener la aplicación de R (y aplicar) para restaurar el estado del generador de números aleatorios?
Algunos código:
# I can save the state of the RNG for a few seeds
seed.list <- lapply(1:5, function(x) {
set.seed(x)
seed.state <- .Random.seed
print(rnorm(1))
return(seed.state)})
#[1] -0.6264538
#[1] -0.8969145
#[1] -0.9619334
# But I get different numbers if I try to restore
# the state of the RNG inside of an lapply
tmp.rest.state <- lapply(1:5, function(x) {
.Random.seed <- seed.list[[x]]
print(rnorm(1))})
# [1] -0.2925257
# [1] 0.2587882
# [1] -1.152132
# lapply is just ignoring the assignment of .Random.seed
.Random.seed <- seed.list[[3]]
print(rnorm(1)) # The last printed value from seed.list
# [1] -0.9619334
print(rnorm(1)) # The first value in tmp.rest.state
# [1] -0.2925257
Mi objetivo es checkpoint MCMC se ejecuta de manera que se pueden reanudar exactamente. Puedo guardar fácilmente el estado del RNG, ¡simplemente no puedo hacer que R lo cargue dentro de un bucle de aplicación!
¿Hay alguna manera de forzar que R note la configuración .Random.seed
? ¿O hay una manera más simple de hacer que esto suceda?
En caso de que importa, estoy usando 64 bits R:
R version 2.15.1 (2012-06-22) -- "Roasted Marshmallows"
Platform: x86_64-pc-linux-gnu (64-bit)
En Ubuntu 12.04 LTS:
n[email protected]:~$ uname -a
Linux nathanvan-N61Jq 3.2.0-26-generiC#41-Ubuntu SMP Thu Jun 14 17:49:24 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
+1 Pregunta muy interesante, gracias. – Andrie