似乎runjags突然(在更新到2.0.3-2版之后)在查找JAGS二进制文件时遇到了问题,并发出一个错误:
[1] "Error in system(\"where jags\", intern = TRUE) : 'where' not found\n"
attr(,"class")
[1] "try-error"
attr(,"condition")
<simpleError in system("where jags", intern = TRUE): 'where' not found
我通过将这一行放到我的Rprofile
中修复了这个问题
.runjags.options <- list(jagspath = "c:/Program Files/JAGS/JAGS-4.2.0/i386/bin/jags-terminal.exe")
这在很大程度上解决了这个问题(尽管这并不理想-以前的runjags版本可以自动找到二进制文件)。
但是,当Rgui (在Windows XP中)通过打开与其关联的.Rdata文件启动时,它将停止工作:
> .runjags.options # it was set in the Rprofile
$jagspath
[1] "c:/Program Files/JAGS/JAGS-4.2.0/i386/bin/jags-terminal.exe"
> require(runjags)
Loading required package: runjags
Warning message:
package ‘runjags’ was built under R version 3.1.3
> runjags.getOption("jagspath")
[1] "Error in system(\"where jags\", intern = TRUE) : 'where' not found\n"
attr(,"class")
[1] "try-error"
attr(,"condition")
<simpleError in system("where jags", intern = TRUE): 'where' not found
这是一个bug吗?如何解决这个问题?
我目前在我的源代码中调用了require(runjags)
之后的runjags.options(jagspath = "c:/Program Files/JAGS/JAGS-4.2.0/i386/bin/jags-terminal.exe")
,但我希望尽可能避免这种情况!
发布于 2016-11-12 11:00:29
问题出在findjags()函数中,更具体地说,是使用2003年添加到Windows中的“where”系统命令,因此Windows XP中不存在该命令。findjags()中有一些代码被设计用来检测Windows的早期版本,并恢复到另一种查找JAGS的方法,但是从1.x版开始这一点没有改变,所以我不知道为什么它突然停止工作。也许您的系统发生了变化,或者system()命令在R中的工作方式发生了变化。我已经修改了这段代码,以解决我认为的错误来源,但我没有访问Windows XP的权限(我对您的权限感到相当惊讶!)所以我不能测试它。我认为这不会有什么坏处,所以在对更新的Windows版本进行测试后,我将在下一个版本中包含它。
我也不知道为什么在打开.Rdata文件时找不到.runjags.options,但打开.Rdata文件可能会在设置对象之前加载库。我会调查这件事,但我可能对此无能为力。使用runjags.options()的另一种方法是在对run.jags等的调用中设置jags参数。
https://stackoverflow.com/questions/40363768
复制相似问题