问题标签 [jags.parallel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - strange jags.parallel error / avoiding lazy evaluation in function call
I have a function call (to jags.parallel
) that works when given a numerical argument like n.iter = 100
but fails when the argument uses a variable value, n.iter = n.iter
. This looks like it might be a bug in jags.parallel
A minimal reproducible example of the error:
Then this works:
But this does not:
Giving the error:
I gather this has something to do with not exporting the variable n.iter
to the cluster, but it is not clear what parallel engine jags.parallel is using. Is there any way to trick R to evaluate n.iter
before passing it to the function?
r - jags.parallel - get(name, envir = envir) 中的错误:第一个参数无效
使用时jags.parallel
,我收到以下错误:
使用jags
函数的相同调用运行正常。我只找到了一个关于这个主题的线程,但只有一个推测性的建议在这里不适用也不行。
可重现的代码,取自生态学家 WinBUGS 简介,见第 14.1 章(稍作修改):
r - jags.parallel:设置的簇少于链:“res [[ch]] 中的错误:下标超出范围”
我只有 2 个核心 CPU,所以逻辑上我只想为jags.parallel
. 不幸的是,当我尝试它并且链数为 3 或 4 时,jags 失败并出现错误:
res[[ch]] 中的错误:下标越界
是否不允许使用更少的线程数(比链数)?
我在文档中没有遇到过这样的声明。无论如何,当您的 CPU 只有 2 个内核时,在 4 个线程/集群中运行 4 个链是没有意义的!线程将争夺 CPU,缓存不会得到最佳使用,结果将比仅使用 2 个线程慢得多。
完整代码:
r - 在函数中使用 jags.parallel(R 语言错误在 get(name, envir = envir) : object 'y' not found)
从命令行或脚本使用 jags.parallel 可以正常工作。我可以从http://www.inside-r.org/packages/cran/R2jags/docs/jags运行这个修改后的例子就好了
但是,如果我将它包装在一个函数中
然后我得到错误: get(name, envir = envir) 中的错误:找不到对象'y'根据我在这里找到的内容,我知道这是导出到集群的环境的问题,我已经通过更改修复了它
到
有没有更好的方法来解决这个问题?
谢谢你,格雷格
附言
我正在为其他人编写此代码,因此我真的不想更改 R2jags 包中的内容以让我通过环境进行导出,尽管我计划将其建议给包的作者。