无法使 R 扩展在 NetLogo 中工作

Cannot make R-extension work in NetLogo

我意识到这并不是一个真正的编程问题,但我希望这里一位非常有经验的 NetLogo 人能够看到我做错了什么,尤其是你们中的许多人在 Java 工作,而我不要。

我正在尝试连接 R 扩展,以便我可以使用 R 库来执行一些棘手的网络操作。我正在使用 Windows 7. 详细的安装说明描述了必须设置的三个系统变量。我已经这样做并从命令提示符中回显它们,R_HOME 和 JRI_HOME 连接到看起来合适的目录,我的 PATH 包括 R bin。

安装说明的第 4 步从命令行打开 R 终端并且工作正常。类似地,从该终端内加载 rJava 库(即第 6 步,输入 library(rJava))returns 适当的消息。检查 java 版本(第 9 步)returns 适当的 64 位响应,与文档中的完全相同,只是我的 vm 版本更新。

一起测试(第 12 步)打开 NetLogo,然后我输入 extensions [r] 但勾号立即将其关闭。根据文档,这是 R_HOME 和 PATH 的错误,但我看不到。在命令行中,我收到一个错误 Cannot find JRI native library! Please make sure that the JRI native library is in a directory listed in java.library.path,然后是许多 java 错误。

是否有我忘记设置的环境变量?我是否需要实际向 java.library.path 添加一些内容,即使文档中没有描述?

更新

在进一步调查中,有一个名为 rsystemcheck 的扩展与 r 扩展一起提供。安装那个 [请注意有此问题的其他人,只需将文件夹移动到扩展文件夹],我的计算机似乎安装了(至少)两个版本的 Java。这并不奇怪,因为 Java 更新过程并没有真正清理干净,并且许多程序安装了运行时的其他版本。

'Check java' 工具报告我安装了 v1.8.0_51 和 v1.6.0_45,如果一个是 32 位,另一个是 64 位,那么 R扩展程序无效。

在我的文件系统中闲逛 - v1.8。0_51 肯定是 32 位的。我还安装了 v1.7.0 64 位(一个新的!)。我无法直接找到 v1.6.0_45,但我认为这是 NetLogo 安装的 jre 文件夹中的版本。

此外,尝试在没有 VM 的情况下安装 NetLogo 并指向我的 JRE 不起作用,因为 NetLogo 要求 JRE 为 32 位。此外,卸载 java 并替换为 32 位版本不起作用,因为我使用 64 位 R.

好的,解决了(如果有些不尽如人意)。我把它留在这里是因为我想象其他使用 Windows 的人希望 R 和 NetLogo 相互交谈。

问题是 NetLogo 需要 32 位Java。我不知道 R 扩展的开发人员如何获得 64 位 R 的屏幕截图,但您真正需要做的是使用 32 位 R。

(1) uninstall 64bit java and instead install 32bit java

(2) add the 32bit R installation

(3) leave the environment variable %R_HOME% as in instructions

(4) add %R_HOME%\bin\i386 to Path

重要的一点是步骤(4),它使R扩展找到R的32位安装。R安装目录有两个bin子目录,一个用于64位(x64),一个用于32位(i386)。 Path 需要找到 32 位版本。

步骤 (1) 可能是可选的 - 我只是没有 java 理解如何处理 java.java.[=11= 的 32 位和 64 位版本所必需的知识]

我认为关键是要确保您的所有软件都是 64 位或 32 位的。我可以使用所有 64 位 R、Java 和 NetLogo 从 NetLogo 成功打开 R。我的工作代码可以在这里找到。 https://raw.githubusercontent.com/tonysdatamodels/netlogo.in.r/main/open%20netlogo%20in%20r. I also have a short video on youtube video explaining how to successfully open NetLogo from R https://www.youtube.com/watch?v=zWMdaTEPTOc.