1

我正在使用 netlogo 开发一个在运行期间必须与 R 通信的模型。我使用 netlogo 中的 r 扩展名(而不是 R 中的 Rnetlogo)来执行此操作。

在设置中,我用 r:eval "source('C:/Users/keemi/OneDrive/Documenten/Thesis/heatpumps/scriptHeatpumpV1.R')" 这个加载我的脚本很好,因为我可以用这个代码询问我想要从脚本中得到什么。r:get "cpquery(fittedHeatpumpv1, event = (Reliability == 0.88), evidence = (Economic == 0.08))"鉴于证据,这给了我事件的机会百分比。

然而,证据必须来自 netlogo 网络,我这样做 r:put "economicvalue" reliability是在 r ->economicvalue 中创建一个变量,该变量来自 netlogo 中的可靠性值(示例中为 0.08)。然后我输入以下代码r:get "cpquery(fittedHeatpumpv1, event = (Reliability == 0.88), evidence = (Economic == economicvalue))"以获得相同的结果,但是 netlogo 给出了错误

Extension exception: Error in R-Extension: Error in Get. org.nlogo.api.ExtensionException: Error in eval(evidence, generated.data, parent.frame()) : object 'economicvalue' not found

error while company 157 running R:GET called by procedure INVEST called by procedure GO called by Button 'go-once'

这很奇怪,因为如果我在 r 本身做同样的事情,它工作得很好。并且脚本本身也可以正常工作,因为我可以从中加载内容。我还检查了 r:put 的值,如果我使用它回调它,它确实设置为 0.08r:get "economicvalue"

我也已经在没有来自 netlogo 的变量的情况下对其进行了测试,但只是将命令直接提供给 r usingr:eval "economicvalue <- 0.08"但会发生相同的错误。

我无法弄清楚我在这里做错了什么,因为如果我放置相同的代码行但不是来自 netlogo,代码本身可以在 r 中运行,并且 netlogo 也表现良好,因为我可以查看 r 命令是否与r:getand一起使用这一切都给出了正确的价值观。

有人可以帮帮我吗?

4

0 回答 0