Чтение указанной c строки файла csv на основе "ID" - PullRequest
2 голосов
/ 16 июня 2020

У меня есть модель NetLo go, и я хотел бы присвоить значения патчам из файла .csv. Патчи имеют определенное значение, которое я хочу использовать в качестве «идентификатора», и если «элемент 0» в строке этого файла .csv совпадает с идентификатором, остальные значения в строке будут присвоены исправлениям с этим 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 ]

Затем все работает, но я бы хотел сделать это без черепах.

1 Ответ

3 голосов
/ 18 июня 2020

Да, посмотрев ваш код, я думаю, вы можете просто сделать:

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

или что-то в этом роде - конечно, с соответствующими именами переменных

...