基于“读取csv文件的特定行”;ID";

基于“读取csv文件的特定行”;ID";,csv,netlogo,Csv,Netlogo,我有一个NetLogo模型,我想为.csv文件中的补丁分配值。补丁有一个我想用作“ID”的特定值,如果该.csv文件的某行中的“项0”与该ID匹配,则该行中的其余值将分配给具有该ID的补丁 我做了一个变通方法,为文件中的每一行创建不可见的海龟,然后分配值是没有问题的,但是有没有一种方法可以直接使用csv文件来实现这一点 编辑:以下是解决方法的作用,首先打开一个文件,然后创建如下“助手”海龟: while [ not file-at-end? ] [ let data csv:from-

我有一个NetLogo模型,我想为.csv文件中的补丁分配值。补丁有一个我想用作“ID”的特定值,如果该.csv文件的某行中的“项0”与该ID匹配,则该行中的其余值将分配给具有该ID的补丁

我做了一个变通方法,为文件中的每一行创建不可见的海龟,然后分配值是没有问题的,但是有没有一种方法可以直接使用csv文件来实现这一点

编辑:以下是解决方法的作用,首先打开一个文件,然后创建如下“助手”海龟:

 while [ not file-at-end? ] [
    let data csv:from-row file-read-line
    create-turtles 1 [
      set xcor 0
      set ycor 0
      set size 0
      set color 0
      set HPJid item 0 data
      set A item 1 data
      set B item 2 data
      set iC item 3 data ] ] 
然后我可以使用:

ask patches [ let helper one-of turtles with [HPJid = HPJ of myself]
set D [A] of helper
set E [B] of helper
set F [C] of helper ]

然后一切都会好起来,但我希望有一种方法可以在没有海龟的情况下做到这一点。

是的,看了您的代码后,我认为您可以简单地做到:

while [ not file-at-end? ]
[ let data csv:from-row file-read-line
  let in-ID item 0 data
  ask one-of patches with [ID = in-ID]
  [ set var1 item 1 data
    set var2 item 2 data
  ]
]

或者类似的东西——当然有合适的变量名

我恐怕不明白海龟们是干什么的,或者没有它们会有什么困难。(在你的问题中包括代码可能会有所帮助吗?)正如我所说的,海龟是一种变通方法,因为我还没有找到一种方法来实现csv扩展的功能。我有一个patch变量,我们称之为ID,它与csv文件中行的第一项匹配,我需要将该行中的其余值分配给补丁。不同的修补程序具有不同的ID,对应于数据文件中的不同行。如果我创建了turtles,我可以通过匹配patch的ID和turtle的ID,将turtles中的值分配给补丁,没有任何问题,但我不知道用csv文件来实现这一点的方法。那么,为什么你不能只读一行,得到第一个元素(比如,它是X),然后
用[ID=X][set语句系列]询问其中一个补丁呢
?你需要给我们csv数据和你的解决方案代码如果我们想了解你在哪里该死,我没有想到用另一种方式,一行一行地读取csv文件,并要求具有匹配ID的修补程序相应地更改其值。这不仅可能真的有效,而且看起来也可能更省时。谢谢@JenB,你帮了我很多。