seltsame jags.parallel Fehler / Vermeidung einer verzögerten Auswertung beim Funktionsaufruf
Ich habe einen Funktionsaufruf (anjags.parallel
) das funktioniert, wenn ein numerisches Argument wie angegeben wirdn.iter = 100
aber scheitert, wenn das Argument einen variablen Wert verwendet,n.iter = n.iter
. Dies scheint ein Bug in zu seinjags.parallel
Ein minimal reproduzierbares Beispiel für den Fehler:
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))
}
Dann funktioniert das:
jagsfit.p <- jags.parallel(data=jags.data, inits=jags.inits, jags.params,
n.iter=5000, model.file=model.file)
Das tut es aber nicht:
n.iter=5000
jagsfit.p <- jags.parallel(data=jags.data, inits=jags.inits, jags.params,
n.iter=n.iter, model.file=model.file)
Fehler melden:
Error in checkForRemoteErrors(lapply(cl, recvResult)) :
3 nodes produced errors; first error: object 'n.iter' not found
Ich denke, das hat etwas damit zu tun, dass die Variable nicht exportiert wirdn.iter
Es ist jedoch nicht klar, welche parallele Engine jags.parallel verwendet. Gibt es eine Möglichkeit, R zu betrügen, um zu bewertenn.iter
bevor es an die Funktion übergeben?