gpt4 book ai didi

r - 从函数中使用 jags.parallel(R 语言错误在 get(name, envir = envir) : object 'y' not found)

转载 作者:行者123 更新时间:2023-12-03 20:04:52 25 4
gpt4 key购买 nike

从命令行或脚本使用 jags.parallel 效果很好。我可以从 http://www.inside-r.org/packages/cran/R2jags/docs/jags 运行这个修改后的示例就好了

# An example model file is given in:
model.file <- system.file(package="R2jags", "model", "schools.txt")
#=================#
# initialization #
#=================#

# data
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))
}


#===============================#
# RUN jags and postprocessing #
#===============================#
# jagsfit <- jags(data=jags.data, inits=jags.inits, jags.params,
# n.iter=5000, model.file=model.file)

# Run jags parallely, no progress bar. R may be frozen for a while,
# Be patient. Currenlty update afterward does not run parallelly

print("Running Parallel")
jagsfit <- jags.parallel(data=jags.data, inits=jags.inits, jags.params,
n.iter=5000, model.file=model.file)

但是如果我把它包装在一个函数里

testparallel <- functions(out){
# An example model file is given in:
.
.
.
jagsfit <- jags.parallel(data=jags.data, inits=jags.inits, jags.params,
n.iter=5000, model.file=model.file)
print(out)
return(jagsfit)
}

然后我得到错误:get(name, envir = envir) 出错:找不到对象“y”根据我发现的 here我知道这是导出到集群的环境的问题,我已经通过更改修复了它

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)

  assign("J",8.0,envir=globalenv()) 
assign("y",c(28.4,7.9,-2.8,6.8,-0.6,0.6,18.0,12.2),envir=globalenv())
assign("sd",c(14.9,10.2,16.3,11.0,9.4,11.4,10.4,17.6),envir=globalenv())

有没有更好的方法来解决这个问题?

谢谢,格雷格

附言

我正在为其他人编写此代码,所以我真的不想更改 R2jags 包中的内容以让我传递环境以进行导出,尽管我计划向包的作者建议它。

最佳答案

所以我联系了 R2jags 的作者,他在 jags.parallel 中添加了一个额外的参数,让您可以传递 envir,然后传递到 clusterExport。

这很好用,除了它允许我的数据名称和 jags.parallel 函数中的变量之间发生冲突。

关于r - 从函数中使用 jags.parallel(R 语言错误在 get(name, envir = envir) : object 'y' not found),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23790452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com