String NetLogo中R扩展名的文件传输-带反斜杠和引号的文件名字符串

String NetLogo中R扩展名的文件传输-带反斜杠和引号的文件名字符串,string,netlogo,String,Netlogo,我需要使用NetLogo中的R扩展来进行一些网络计算。我在NetLogo中创建网络,将其导出到文本文件中,让R读取文本文件并构建图形并计算属性,然后得到计算结果。导出、读取、计算和获取由NetLogo通过R扩展控制 但是,NetLogo和R有不同的默认工作目录。关于在R中更改目录、断开与扩展的连接(请参阅)的问题影响了我在模型上使用BehaviorSpace的尝试 我的新方法是不更改R工作目录,而只是提供导出文件的R的完整路径 r:clear let dir pathdir:get-mo

我需要使用NetLogo中的R扩展来进行一些网络计算。我在NetLogo中创建网络,将其导出到文本文件中,让R读取文本文件并构建图形并计算属性,然后得到计算结果。导出、读取、计算和获取由NetLogo通过R扩展控制

但是,NetLogo和R有不同的默认工作目录。关于在R中更改目录、断开与扩展的连接(请参阅)的问题影响了我在模型上使用BehaviorSpace的尝试

我的新方法是不更改R工作目录,而只是提供导出文件的R的完整路径

  r:clear
  let dir pathdir:get-model
  r:eval "library(igraph)"

  ; read network in R (avoid bug of R change working directory)
  let runstring (word "r:eval \"gg <- read_graph(file = \"" dir "\\netlogo.gml\", format = \"gml\")\"")
  print runstring
  run runstring

pathdir
选项最终起作用。下面是将来遇到类似问题的人的示例代码

let filename (word "Networks/netlogo" behaviorspace-run-number ".gml")
export-simple-gml filename

r:clearLocal
let dir pathdir:get-model
set filename (word dir "/" filename)
r:put "fn" filename
r:eval "gg <- read_graph(file = fn, format = 'gml')"
r:eval "V(gg)$name <- V(gg)$id"          ; gml uses 'id', but igraph uses 'name'

你试过向前斜杠而不是向后斜杠吗?如果我没记错的话,R只接受路径的双反斜杠和单正斜杠。因为你可能会因为混合了两倍后斜杠和引号而成为问题,我会尝试前斜杠。谢谢,我会尝试一下。我使用pathdir扩展来检索路径,当然它使用向后斜杠。我会做一个替代品,看看会发生什么。我的想法是,如果你在像OSX这样的unixey系统上,你可以在操作系统级别使用符号链接来欺骗NetLogo和R,但我看到你在使用Windows。然而,现在看起来是这样(这么多年之后,这并不奇怪)。
let Rstring "gg <- read_graph(file = 'C:\\Users\\Jen\\Desktop\\Intervention Effect\\Networks\\netlogo.gml', format = 'gml')"
r:eval Rstring
let filename (word "Networks/netlogo" behaviorspace-run-number ".gml")
export-simple-gml filename

r:clearLocal
let dir pathdir:get-model
set filename (word dir "/" filename)
r:put "fn" filename
r:eval "gg <- read_graph(file = fn, format = 'gml')"
r:eval "V(gg)$name <- V(gg)$id"          ; gml uses 'id', but igraph uses 'name'
to export-simple-gml [ FN ]
  carefully [ file-close-all ] [ ]
  carefully [ file-delete FN ] [ ]
  file-open FN
  file-print <line to write to file>
  ...
end