【问题标题】:Combining and formatting lists in NetLogo在 NetLogo 中组合和格式化列表
【发布时间】:2014-08-29 06:37:41
【问题描述】:

我有一个名为“coords”的点对列表(在 NetLogo 坐标中),如下所示:

[[[255 97] [256 97]] 
 [[-131 408] [-129 407]]
 [[-125 406] [-122 405]] 
 [[-84 188]] [-83 188]]
 [[-303 200] [-304 203]]
 [[25 414] [19 415]]
 [[-128 256] [-125 254]]
 .......................................]

每个点对都与一个分类变量相关联,该变量取值“I”、“U”或“S”之一。我有这些分类变量的单独列表,称为“coord_class”,长度和顺序与上面列出的点对相同。

["S" "S" "U" "I" "S" "I" "U" ...]

我想做的是将相应的分类变量附加到点对中,如下所示:

[[[255 97 "S"] [256 97 "S"]] 
 [[-131 408 "S"] [-129 407 "S"]]
 [[-125 406 "U"] [-122 405 "U"]] 
 [[-84 188 "I"]] [-83 188 "I"]]
 [[-303 200 "S"] [-304 203 "S"]]
 [[25 414 "I"] [19 415 "I"]]
 [[-128 256 "U"] [-125 254"U"]]
 .......................................]

请注意,给定对中的两个点都采用相同的分类变量值。

我尝试使用地图报告器来做到这一点:

set coords (map [list ?1 ?2] coords coord_class)

给出如下所示的输出:

[[[[255 97] [256 97]] "S"] 
 [[[-131 408] [-129 407]] "S"]
 [[[-125 406] [-122 405]] "U"] 
 [[[-84 188]] [-83 188]] "I"]
 [[[-303 200] [-304 203]] "S"]
 [[[25 414] [19 415]] "I"]
 [[[-128 256] [-125 254]] "U"]
 .......................................]

代码中的其他函数的结构不正确。任何帮助我获得所需输出的建议将不胜感激。谢谢!

【问题讨论】:

    标签: netlogo


    【解决方案1】:

    您有一个列表列表。做你想做的事需要两个单独的map 操作。最简单的方法可能是将任务分配给两个小记者:

    to-report add-classes [ coords classes ]
      report (map add-class coords classes)  
    end
    
    to-report add-class [ lists class ]
      report map [ lput class ? ] lists
    end
    

    然后你可以像这样使用它:

    to go
      let coords [
        [ [ 255  97] [ 256  97] ]
        [ [-131 408] [-129 407] ]
        [ [-125 406] [-122 405] ]
        [ [ -84 188] [ -83 188] ]
        [ [-303 200] [-304 203] ]
        [ [  25 414] [  19 415] ]
        [ [-128 256] [-125 254] ]
      ]
      let coord_class ["S" "S" "U" "I" "S" "I" "U"]
      show add-classes coords coord_class
    end
    

    这将打印所需的输出:

    [[[255 97 "S"] [256 97 "S"]] [[-131 408 "S"] [-129 407 "S"]] [[-125 406 "U"] [-122 405 "U"]] [[-84 188 "I"] [-83 188 "I"]] [[-303 200 "S"] [-304 203 "S"]] [[25 414 "I"] [19 415 "I"]] [[-128 256 "U"] [-125 254 "U"]]]
    

    【讨论】:

    • 太好了,效果很好。假设地说,如果我想连接另一组属性,我会嵌套第二个代码块。例如: set combined-classes add-classes coords coord_class set ultra-combined-classes add-classes combined-classes new-field
    • 行得通,是的。但它实际上是reduce 的一个很好的用例。试试:show reduce add-classes (list coords coord_class new-field)。 (您可以在列表中添加任意数量的字段。)
    猜你喜欢
    • 2014-02-21
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 2017-11-02
    • 2016-03-07
    相关资源
    最近更新 更多