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?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage