如何从 NetLogo Behaviorspace 中保存 table 格式的全局变量
How to save a global variable with table format from NetLogo Behaviorspace
我为我的 ABM 编写了一个相当复杂的代码(634 个具有交互的代理,每个代理都有不同的变量,其中一些是具有多个值的列表,每个值都会更新)。因为我需要保存所有代理的更新值,所以我使用 table:make 定义了一个全局变量。 table 有 634 个键(每个键代表一个代理),每个键都有一个列表,其中包含相应代理的这些值(来自该代理拥有的列表变量)。但是,当我使用此 table 的名称作为我在行为 Space 中的输出之一进行报告时,csv 文件中的结果是 table,没有键,它只有一个数字其中:{{table: 1296}}。所以,我想知道如何更改此变量才能拥有所有值。
如果您乐于在事后用 R 或其他东西做一些 post 处理,那么 table:to-list
可能就是您所需要的。例如,使用一个简单的设置示例,如:
extensions [ table ]
globals [ example-table ]
turtles-own [ turtle-list ]
to setup
ca
crt 3 [
set turtle-list ( list random 10 one-of [ "A" "B" "C" ] random 100 )
]
set example-table table:make
foreach sort turtles [
t ->
table:put example-table ( word "turtle_" [who] of t ) [turtle-list] of t
]
reset-ticks
end
还有一个 to-report
来清理每个 table 项目,这样第一个项目就是键,所有其他项目都是列表中的项目:
to-report easier-read-table [ table_ ]
let out []
foreach table:to-list table_ [ i ->
set out lput ( reduce sentence i ) out
]
report out
end
您可以设置您的 BehaviorSpace 实验,让您的一位记者就是那个记者,例如:
要获取 .csv 文件,例如:
记者专栏输出列表的列表,您可以按照自己的喜好进行处理。
但是,我可能不会为此使用基本的 BehaviorSpace 输出,而是在实验中调用手动 table 输出过程。例如,使用 csv
扩展来制作此 output-table
过程:
to output-table [ filename_ table_ ]
let out [["key" "col1" "col2" "col3"]]
foreach table:to-list table_ [ i ->
set out lput ( reduce sentence i ) out
]
csv:to-file filename_ out
end
这会输出更易于分析的 table 如果您不太舒服 table 清理列表列表的输出,据我所知,您会得到从行为空间输出。因此,您可以在实验结束时调用它,例如:
获得table赞:
这样比较好处理。如果需要,您显然可以修改它以更频繁地报告,例如:
这将在实验的每个刻度输出一个 table(您也可以在代码中执行此操作以使其更容易一些)。
我为我的 ABM 编写了一个相当复杂的代码(634 个具有交互的代理,每个代理都有不同的变量,其中一些是具有多个值的列表,每个值都会更新)。因为我需要保存所有代理的更新值,所以我使用 table:make 定义了一个全局变量。 table 有 634 个键(每个键代表一个代理),每个键都有一个列表,其中包含相应代理的这些值(来自该代理拥有的列表变量)。但是,当我使用此 table 的名称作为我在行为 Space 中的输出之一进行报告时,csv 文件中的结果是 table,没有键,它只有一个数字其中:{{table: 1296}}。所以,我想知道如何更改此变量才能拥有所有值。
如果您乐于在事后用 R 或其他东西做一些 post 处理,那么 table:to-list
可能就是您所需要的。例如,使用一个简单的设置示例,如:
extensions [ table ]
globals [ example-table ]
turtles-own [ turtle-list ]
to setup
ca
crt 3 [
set turtle-list ( list random 10 one-of [ "A" "B" "C" ] random 100 )
]
set example-table table:make
foreach sort turtles [
t ->
table:put example-table ( word "turtle_" [who] of t ) [turtle-list] of t
]
reset-ticks
end
还有一个 to-report
来清理每个 table 项目,这样第一个项目就是键,所有其他项目都是列表中的项目:
to-report easier-read-table [ table_ ]
let out []
foreach table:to-list table_ [ i ->
set out lput ( reduce sentence i ) out
]
report out
end
您可以设置您的 BehaviorSpace 实验,让您的一位记者就是那个记者,例如:
要获取 .csv 文件,例如:
记者专栏输出列表的列表,您可以按照自己的喜好进行处理。
但是,我可能不会为此使用基本的 BehaviorSpace 输出,而是在实验中调用手动 table 输出过程。例如,使用 csv
扩展来制作此 output-table
过程:
to output-table [ filename_ table_ ]
let out [["key" "col1" "col2" "col3"]]
foreach table:to-list table_ [ i ->
set out lput ( reduce sentence i ) out
]
csv:to-file filename_ out
end
这会输出更易于分析的 table 如果您不太舒服 table 清理列表列表的输出,据我所知,您会得到从行为空间输出。因此,您可以在实验结束时调用它,例如:
获得table赞:
这样比较好处理。如果需要,您显然可以修改它以更频繁地报告,例如:
这将在实验的每个刻度输出一个 table(您也可以在代码中执行此操作以使其更容易一些)。