如何在netlogo中为txt文件中的每一行创建一个新列表?例如,我有一个包含以下值的文件:
[89 64 90 1 97 45 109]
[89 64 90 1 97 38 109]
[89 101 11 51 80 9 109]
[89 101 11 51 80 16 13 109]
[89 101 11 51 80 16 13 68 109]
而且我想为这些行中的每一行创建一个列表。即
List1: [89 101 11 51 80 16 109]
List2: [89 101 11 51 80 9 109]
etc...
文件中的行数各不相同,因此无法静态分配列表数。这是当前代码,循环浏览文件并在控制台中将每一行输出为列表:
to DetermineRoute
ask sensors with [color = green][
file-open "BaseStationRoutes.txt"
while [ not file-at-end? ] [
let Route file-read-line
set Route read-from-string Route
print Route
print length Route ;length is the hop count
]
file-close
]
end
最终目标是获得每个列表的平均长度以计算标准差。
任何建议,我们将不胜感激,
最好的问候,
汤姆
缺乏说明,JenB要求,让我们简单地讲一下如何存储可变长度的可变数量列表。在NetLogo中,执行此操作的最佳结构是列表列表,因为列表的长度可以变化并且包含不同的元素。您上面的步骤将是
to DetermineRoute
ask sensors with [color = green][
let Routes []
file-open "BaseStationRoutes.txt"
while [ not file-at-end? ] [
let Route file-read-line
set Route read-from-string Route
set Routes lput Route Routes
; print length Route ;length is the hop count
]
file-close
]
end
Routes
初始化为一个空列表,并且文件的每一行都用lput
附加到该列表。每个Route
是Routes
中的一个项目,例如,第一个Route
是item 0 Routes
,等等。路由列表的数量是length Routes
,第三个路由的长度(例如)的长度是length item 2 Routes
。
希望这会有所帮助,查尔斯