根据"ID"读取csv文件的特定行
Reading a specific line of a csv file based on "ID"
我有一个 NetLogo 模型,我想从 .csv 文件中为补丁分配值。这些补丁具有我想用作 "ID" 的特定值,如果该 .csv 文件的一行中的 "item 0" 与 ID 匹配,则该行中的其余值将分配给具有该 ID 的补丁程序。
我做了一个解决方法,为文件中的每一行创建不可见的海龟,然后分配值没问题,但是有没有办法直接使用 csv 文件来完成此操作?
编辑:解决方法是这样的,首先打开一个文件,然后像这样创建 "helper" 海龟:
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
]
]
或者类似的东西——当然要有适当的变量名
我有一个 NetLogo 模型,我想从 .csv 文件中为补丁分配值。这些补丁具有我想用作 "ID" 的特定值,如果该 .csv 文件的一行中的 "item 0" 与 ID 匹配,则该行中的其余值将分配给具有该 ID 的补丁程序。
我做了一个解决方法,为文件中的每一行创建不可见的海龟,然后分配值没问题,但是有没有办法直接使用 csv 文件来完成此操作?
编辑:解决方法是这样的,首先打开一个文件,然后像这样创建 "helper" 海龟:
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
]
]
或者类似的东西——当然要有适当的变量名