我有一个包含 20 个项目的列表,我想计算列表中每个项目的出现次数。我知道下面的代码
to-report frequency [i lst]
report length filter [? = i] list
end
Run Code Online (Sandbox Code Playgroud)
但我不想写 20 行
let C1 frequency 1 (list1)
let C2 frequency 2 (list1)
.
.
.
let C20 frequency 20 (list1)
Run Code Online (Sandbox Code Playgroud)
那是:
map [frequency ? list1] n-values 20 [? + 1]
Run Code Online (Sandbox Code Playgroud)
示例运行:
observer> set list1 [1 4 4 7 10 10 10 14]
observer> show map [frequency ? list1] n-values 20 [? + 1]
observer: [1 0 0 2 0 0 1 0 0 3 0 0 0 1 0 0 0 0 0 0]
Run Code Online (Sandbox Code Playgroud)
对于 NetLogo 6,OP 的功能是这样的:
to-report frequency [an-item a-list]
report length (filter [ i -> i = an-item] a-list)
end
Run Code Online (Sandbox Code Playgroud)
制作一个频率列表是这样修改的:
map [ i -> frequency i list1] (n-values 20 [i -> i])
Run Code Online (Sandbox Code Playgroud)