Reading a specific line of a csv file based on "ID"

Viewed 251

I have a NetLogo model and I would like to assign values to patches from a .csv file. The patches have a certain value that I want to use as an "ID" and if "item 0" in a line of that .csv file matches the ID, the rest of the values in the line would be assigned to the patches with that ID.

I made a workaround that creates invisible turtles for each line in the files and then assigning the values is no problem, but is there a way to do this directly using just the csv file?

EDIT: Here's what the workaround does, first opens a file and then creates "helper" turtles like this:

 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 ] ] 

Then I can just use:

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 ]

Then all works, but I'd like a way to do this without the turtles.

1 Answers

Yes, having looked at your code, I think you can simply do:

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
  ]
]

or something like that anyway - with appropriate variable names of course

Related