在NetLogo中组合和格式化列表

在NetLogo中组合和格式化列表,netlogo,Netlogo,我有一个名为“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]] .......................................]

我有一个名为“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]]
 .......................................]
[[[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"]]
 .......................................]
[[[[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"]
 .......................................]
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
每个点对都有一个与之相关联的分类变量,该变量取值“I”、“U”或“S”中的一个。我有一个单独的分类变量列表,称为“coord_类”,其长度和顺序与上面列出的点对相同

["S" "S" "U" "I" "S" "I" "U" ...]
我想做的是将相应的分类变量附加到点对,方式如下:

[[[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]]
 .......................................]
[[[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"]]
 .......................................]
[[[[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"]
 .......................................]
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
请注意,给定对中的两个点采用相同的分类变量值

我尝试使用map reporter执行此操作:

set coords (map [list ?1 ?2] coords coord_class)
其输出如下所示:

[[[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]]
 .......................................]
[[[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"]]
 .......................................]
[[[[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"]
 .......................................]
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

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

您有一个列表列表。执行所需操作需要两个独立的
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
然后您可以这样使用它:

[[[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]]
 .......................................]
[[[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"]]
 .......................................]
[[[[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"]
 .......................................]
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"]]]

太好了,这很有效。假设地说,如果我想连接另一组属性,我只需要嵌套第二个代码块。例如:设置组合类添加类coords coord_类设置超组合类添加类组合类新字段有效,是。但它实际上是一个非常好的用例。尝试:
显示减少添加类(列出coords coord\u类新字段)
。(您可以在列表中添加任意数量的字段。)