我正在尝试使用RNetLogo在无头模式下加载Netlogo模型。该模型使用由extensions [rnd]
添加到模型的rnd扩展。如果我尝试使用NLLoad(model.path)
加载模型,则会出现此错误:
NLLoadModel(model.path)
[1] "Java-Object{Can't find extension: rnd at position 79 in }"
Error in NLLoadModel(model.path) :`
不幸的是,我在documentation of NLLoad找不到任何内容。
我尝试将工作目录设置为Netlogo目录:setwd("/Applications/Netlogo 6.0.1")
。这会将错误更改为
[1] "Java-Object{There was a problem while reading extension rnd at position 79 in }"
Fehler in NLLoadModel(model.path) :
rnd
扩展程序在扩展程序文件夹中安全无虞:/Applications/Netlogo 6.0.1/extensions/rnd.jar
。
答案 0 :(得分:2)
回应你的评论 - 这太糟糕了,但值得一试。也许这种方法只适用于从命令行运行无头。我也只是觉得你看起来像是在Mac上 - 我正在运行Windows,所以我的解决方案很可能不适合你。您是否在RNetlogo documentation?
中阅读了“MAC用户注释”无论如何,我在Windows上有一个简单的版本,所以我想我会告诉你我的设置,看看是否有帮助。这是包含我的模型的文件夹,以及包含app
的{{1}}文件夹和包含所有扩展名及其文件夹的netlogo-6.0.1.jar
文件夹(从{{1}内复制完整文件夹):
extensions
如下:
app
然后,在R:
test_rnd.nlogo
所以在这个例子中,至少在Windows中,只是将扩展文件夹,app文件夹和模型文件本身放在同一个位置似乎都有效。抱歉,我不知道Mac的修复程序,希望其他人有正确的解决方案。
答案 1 :(得分:0)
我通过将CSV扩展文件夹的内容直接复制到app
文件夹中来完成此工作(使用CSV扩展名)。
我在GNU / Linux下工作。此方法对OSx用户也可能更好。我猜这是没有按预期工作,因为没有“安装”RNetLogo为我们设置类路径。我们明确告诉R在哪里可以找到netlogo-x.x.x.jar,但不能找到任何扩展。
答案 2 :(得分:0)
在Mac上,此问题可以通过以下方法解决:
对于正在使用的每个NetLogo扩展,请将其复制并粘贴到包含您要运行的.nlogo模型的目录中。
例如,对于扩展名rnd
,将文件夹/Applications/NetLogo 6.0.4/extensions/nw
复制到model.path
中设置的封闭文件夹中。 NLLoadModel(model.path)
现在应该执行而不会出现此错误。
此解决方案基于Extensions Guide of the NetLogo 6.0.4 User Manual(添加了重点):
NetLogo将在几个地方寻找扩展名:
- 在当前模型的文件夹中。
- NetLogo安装中的扩展文件夹。对于典型的NetLogo安装:
- 在Mac OS X上:/ Applications / NetLogo 6.0.4 / extensions
- 在具有64位NetLogo的64位Windows或具有32位NetLogo的32位Windows上:C:\ Program Files \ NetLogo 6.0.4 \ app \ extensions
- 在具有32位NetLogo的64位Windows上:C:\ Program Files(x86)\ NetLogo 6.0.4 \ app \ extensions
- 在Linux上:从安装.tgz中提取的NetLogo目录的app / extensions子目录
我不清楚为什么对/Applications/NetLogo 6.0.4/extensions
的检查不起作用,但至少有解决方案!
我在NetLogo中遇到了nw
扩展名相同的问题,收到几乎相同的错误:
> NLLoadModel(model.path)
[1] "Java-Object{Can't find extension: nw at position 13 in }"
Error in NLLoadModel(model.path) :
因此,该问题似乎适用于所有扩展程序。