我的问题是如何将一组列表数据转换为数组,但是,我仍然坚持这样做,并试图以我所能想到的所有可能的方式对其进行编码。不幸的是,我搞不懂。
首先,我有两个文本文件,其中包含以下值:
0 1 2 3 438 418 424 434 439 417 421 0. 447 412 426 436 448 413 422 0
然后,我想将它添加到网络徽标中,所以我使用以下内容:
extensions [table matrix array csv]
globals
[
Dummy-Retrieve-list
patch-data
string-array
]
to setup
file-close-all
ca
file-open "Matching.txt"
while [ not file-at-end? ]
[
set string-array (list n-values 4 [file-read])
print string-array
let i 0
foreach string-array
[ x -> array:set patch-data i x
set i (i + 1)
print patch-data
]
print patch-data
]
file-close这里我想要的是在输入列表中获得一批4个值(将来可能是n个值),然后将它形成一个数组作为另一个数组的输入。但是,我不知道怎么做,所以我使用foreach函数对值进行循环,然后使用array:set将数据设置到新的数组上。
我不知道值的位置会如何变化,所以我使用"set i (i + 1)“来保持顺序。但是它返回false,因为它期望一个匿名命令,而不是列表或块,所以我被卡住了。
有人知道将值列表转换为数组值列表的更容易的方法吗?我问这个问题的原因是,将来可能不会选择4个值,但可能会更多,所以不可能使用这样的代码:
set string-array list file-read file-read file-read file-read这就是为什么我使用list n-values 4 [file-read]代替。我还搜索了谷歌和NetLogo程序提供的所有其他例子,但仍然没有弄清楚。
总之,我想要的是转换如下列表:
[[v11 v21 v31 ... vn1] [[v12 v22 v32 ... vn2] ... [v1m v2m v3m ... vnm]]在这个数组中:
{{array: {{array: v11 v21 v31 ... vn1}} {{array: v12 v22 v32 ... vn2}} ... {{array: v1m v2m v3m ... vnm}}}}发布于 2017-07-06 09:57:59
我找到了回答我的问题的方法,它使用了双foreach循环。
谢谢你帮我接电话,@NicolasPayette。
这就是我的问题的答案:
file-open "Matching.txt"
let k 0
while [ not file-at-end? ]
[
let j 0
set string-array (list n-values 4 [file-read])
print string-array
foreach string-array
[ [i] -> foreach i
[ [m] -> insert-retrieval j k m
set j j + 1
]
]
set k k + 1
print Retrieve-list
]
file-closeinsert-retrieval j k m是将数据输入检索列表的函数,j是列,k是行,m是值。
https://stackoverflow.com/questions/44940694
复制相似问题