如何将txt文件中的每一行存储到netlogo中的新列表?

问题描述 投票:0回答:1

如何在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

最终目标是获得每个列表的平均长度以计算标准差。

任何建议,我们将不胜感激,

最好的问候,

汤姆

netlogo
1个回答
0
投票

缺乏说明,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附加到该列表。每个RouteRoutes中的一个项目,例如,第一个Routeitem 0 Routes,等等。路由列表的数量是length Routes,第三个路由的长度(例如)的长度是length item 2 Routes

希望这会有所帮助,查尔斯

© www.soinside.com 2019 - 2024. All rights reserved.