0

似乎 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),但我想尽可能避免这种情况!

4

1 回答 1

1

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

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

于 2016-11-12T11:00:28.513 回答