runjags找不到JAGS的错误 - 即使在设置jagspath

时间:2016-11-01 15:57:51

标签: r rgui runjags

似乎突然出现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可以自动找到二进制文件。)

但是,当通过打开与之关联的.Rdata文件启动Rgui(在Windows XP中)时,它将停止工作:

> .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

这是一个错误吗?如何解决这个问题?

我目前在runjags.options(jagspath = "c:/Program Files/JAGS/JAGS-4.2.0/i386/bin/jags-terminal.exe")之后在我的来源中呼叫require(runjags),但我希望尽可能避免这种情况!

1 个答案:

答案 0 :(得分:1)

问题在于findjags()函数,更具体地说是使用&#39;其中&#39;系统命令在2003年添加到Windows,因此在Windows XP中不存在。 findjags()中有一些代码用于检测Windows的早期版本并恢复为查找JAGS的不同方法,但是自1.x版以来这没有改变所以我不知道为什么这样做突然之间#&#39;停止工作。也许您的系统发生了变化,或者系统()命令在R中的工作方式发生了变化。我已修改此代码以解决我认为错误来自的地方,但我没有访问Windows XP(我很惊讶你这样做!)所以我无法测试它。我不认为它会造成任何伤害,所以无论如何我会在更新版本的Windows上测试后将其包含在下一个版本中。

我也不确切知道为什么在打开.Rdata文件时找不到.runjags.options,但是在设置对象之前打开.Rdata文件可能会加载库。我将研究这个问题,但这可能不是我可以做的任何事情。使用runjags.options()的替代方法是在调用run.jags等时设置jags参数。