我在读取NetLogo中名为Window.csv的CSV格式文件时遇到问题。您能指导我逐步导入CSV文件吗?我的第一个问题:我是否必须将此文件放置在特定的文件夹中,以及如何将文件的位置引入NetLogo? 我尝试了一些方法: 1-在观察者中编写此代码:
csv:from-file "/C:/Program Files/NetLogo 6.0.3/to/Window.csv"
我遇到此错误:尚未定义名为CSV:FROM-FILE的名称。 2-我在NetLogo的代码空间中尝试过此代码:
set filename “C:\Program Files\NetLogo 6.0.3\Window.csv”
to-report sum-columns [ file ]
file-open file
set result csv:from-row file-read-line
while [ not file-at-end? ] [
let row csv:from-row file-read-line
set result (map [?1 + ?2] result row)
]
file-close
report result
end
我遇到此错误:应使用关键字 3-我尝试了在此站点上找到的以下代码:
extensions [csv]
globals [data variable]
to setup
file-close-all
file-open "Window.csv"
;; read the data all at once by using csv:from-file
set data csv:from-file "Window.csv"
reset-ticks
end
to go
if file-at-end? [stop]
;; extract value from the list, using item 0 to remove the list, and just keep the value
set variable item 0 item ticks data
tick
if ticks = length data [stop]
show variable
end
但是什么也没发生。 提前谢谢。
答案 0 :(得分:3)
最简单的方法是将NetLogo模型(.nlogo)和CSV文件(.csv)保存在同一文件夹中,如下所示:
然后,您可以像在第二个示例中那样使用csv
扩展名,如下所示:
extensions [csv]
globals [ data ]
to setup
ca
set data csv:from-file "example_data.csv"
print data
reset-ticks
end
运行该代码后,您的示例数据存储在data
变量中。您也可以类似的方式使用相对寻址。例如,如果您将数据存储在与模型相同的文件夹中的一个文件夹中,则:
data_folder
包含您要加载的CSV文件,您可以这样做
set data csv:from-file "data_folder/example_data.csv"
如果您不知道文件相对于模型的存储位置,则始终可以提供完整的地址。如果我的C驱动器上有一个名为“ data_folder”的文件夹,其中包含我的“ example_data.csv”,则可以这样调用:
set data csv:from-file "C:/data_folder/example_data.csv"
编辑-详细信息:
我将通过上面的第一个示例向您展示我从第一个示例中获得的输出。
名为“ example_data.csv”的文件与NetLogo文件存储在同一文件夹中。在我的NetLogo文件中,我只有:
extensions [csv]
globals [ data ]
to setup
ca
set data csv:from-file "example_data.csv"
print data
reset-ticks
end
然后,在我的界面上,我放置了一个名为setup
的按钮,以在界面上调用上述过程:
如果按下setup
按钮,将执行代码并运行print data
语句,以便在命令中心看到结果:
由此,您可以看到已经加载了.csv,使得每一行都作为列表存储在名为data
的列表中。