我有一个点对(在NetLogo坐标中)的列表,名为" 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]]
.......................................]
每个点对都有一个分类变量,它取一个值" 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"]
.......................................]
这不适用于代码中的其他功能。任何建议,以帮助我获得所需的输出将不胜感激。谢谢!
答案 0 :(得分:2)
您有一份列表清单。做你想做的事需要两个独立的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"]]]