我正在使用 Netlogo 中的 CSV 扩展从表格中获取数字。该文件有一个标题和一列,共 1700 行。
我的每个刻度都需要从 CSV 表中获取下一个数字。
示例:
Table
67,
81,
54
for tick 1 set precipitation 67
for tick 2 set precipitation 81
for tick 3 set precipitation 54
等等
如何做到这一点?
前面的答案很好,除了:记住
csv:from-row
产生一个 list,而不是数字。降水量将是该列表中的唯一项目。要获得降水量,您需要:
set precipitation first (csv:from-row file-read-line)
扩展程序的官方帮助页面上有一个示例,演示了如何从具有单列的表中提取值。请参阅下面的修改版本,包括 @SteveRailsback 使用 first
以避免列表输出的建议。
extensions [csv]
globals [ precipitation ]
to setup
clear-all
file-close-all ; Close any files open from last run
file-open "test.csv"
set precipitation csv:from-row file-read-line ; use it once to skip the header
; other setup goes here
reset-ticks
end
to go
if file-at-end? [ stop ]
set precipitation first csv:from-row file-read-line
tick
end
如果您有一个包含 多个列的表,我建议存储表标题并使用它来标识列索引。
extensions [csv]
globals [
csv_headers
precipitation
other_var
]
to setup
clear-all
file-close-all ; Close any files open from last run
file-open "test.csv"
set csv_headers csv:from-row file-read-line ; store headers to find right column
reset-ticks
end
to go
if file-at-end? [ stop ]
let current_line csv:from-row file-read-line ; read the full line
set precipitation item (position "precipitation" csv_headers) current_line ; pick value from column with precipitation header
set other_var item (position "other_var" csv_headers) current_line ; repeat for another variable
tick
end