Netlogo 如何使用“向矩阵添加元素”?

Netlogo 如何使用“向矩阵添加元素”?,netlogo,Netlogo,我想将多个项目从一个列表添加到另一个列表,这个列表被组织在一个大列表中,就像一个矩阵 let targetlists (list firstlist seccondlist thirdlist) 所以在我的双while循环中,我添加了这个代码 set (item x targetlists) lput (item y sourcelist) (item x targetlists) 遗憾的是,它给了我以下错误: 这不是你可以使用的设置 我发现这与我如何选择目标列表有关,因为下面的代码确实有效

我想将多个项目从一个列表添加到另一个列表,这个列表被组织在一个大列表中,就像一个矩阵

let targetlists (list firstlist seccondlist thirdlist)
所以在我的双while循环中,我添加了这个代码

set (item x targetlists) lput (item y sourcelist) (item x targetlists)
遗憾的是,它给了我以下错误:

这不是你可以使用的设置

我发现这与我如何选择目标列表有关,因为下面的代码确实有效,但并不是我想要的:

set firstlist lput (item y sourcelist) firstlist

JenB说得对,一般来说,您使用replace item。但是,将while循环替换为将更加有效

我不完全确定您想做什么,但看起来您想将sourcelist的元素放在TargetList列表的末尾。即使这不是你正在做的,这也应该为你指明正确的方向:

set targetlists (map [ [ source-item target-row ] ->
  lput source-item target-row
] sourcelist targetlists)
这将一起迭代sourcelist和TargetList的项,并在对上调用lput

此外,还有一个方便的快捷方式,如果记者已经做了你想做的事情,你可以直接将其传递给地图。因此,您可以将其压缩为:

set targetlists (map lput sourcelist targetlists)
现在,考虑到您提到了嵌套的whiles,并且您正在使用两个不同的索引将其索引到两个列表中,您可能试图将sourcelist的全部内容放在每个TargetList的末尾。如果是这样的话,你可以这样做

set targetlists map [ l -> (sentence l sourcelist) ] targetlists

如果我完全不喜欢,而你正试图做一些完全不同的事情,请在评论中告诉我,我会更新我的答案。

在这种情况下,什么是双精度?也许是因为我对netlogo缺乏了解,但我不理解你的问题,我的意思是,我在另一个while循环中有一个while循环。如果要将值放在中间某个位置而不是更改现有值,则需要替换项,而不是将其设置为编辑列表任意位置的值,或者插入项