error extraño de jags.parallel / evitar la evaluación perezosa en la llamada de función
Tengo una llamada de función (ajags.parallel
) que funciona cuando se le da un argumento numérico comon.iter = 100
pero falla cuando el argumento usa un valor variable,n.iter = n.iter
. Esto parece que podría ser un error enjags.parallel
Un ejemplo mínimo reproducible del error:
library(R2jags)
model.file <- system.file(package="R2jags", "model", "schools.txt")
J <- 8.0
y <- c(28.4,7.9,-2.8,6.8,-0.6,0.6,18.0,12.2)
sd <- c(14.9,10.2,16.3,11.0,9.4,11.4,10.4,17.6)
jags.data <- list("y","sd","J")
jags.params <- c("mu","sigma","theta")
jags.inits <- function(){
list("mu"=rnorm(1),"sigma"=runif(1),"theta"=rnorm(J))
}
Entonces esto funciona:
jagsfit.p <- jags.parallel(data=jags.data, inits=jags.inits, jags.params,
n.iter=5000, model.file=model.file)
Pero esto no lo hace:
n.iter=5000
jagsfit.p <- jags.parallel(data=jags.data, inits=jags.inits, jags.params,
n.iter=n.iter, model.file=model.file)
Dando el error:
Error in checkForRemoteErrors(lapply(cl, recvResult)) :
3 nodes produced errors; first error: object 'n.iter' not found
Supongo que esto tiene algo que ver con no exportar la variablen.iter
al clúster, pero no está claro qué motor paralelo usa jags.parallel. ¿Hay alguna manera de engañar a R para evaluarn.iter
¿Antes de pasarlo a la función?