我需要在netlogo的csv输出文件中保存我的模拟数据 每10个滴答我想保存几个代理的数据 但我想每次都在新列中写入数据 每次他继续投入新原料的问题 有命令或方法吗? 谢谢 这是写入文件的功能 我在每个刻度线的程序中称它为
session.beginTransaction();
我得到的结果如下
to write-to-file [set-breed]
let n 0
let str ""
set str set-breed
file-print (word "---------- Tick Number: " ticks "-----------")
foreach my-agent-list [
ifelse ? != nobody[
ask ? [
file-print (word ": (x:y)," "(" pxcor ":" pycor"),")
file-type (word ": age," age ",")
file-print ""
set n n + 1
]][
file-type (word set-breed n ":," "dead")
set n n + 1
file-print ""
]]
file-print "" ;; blank line
file-flush
end
所需的内容如下:
---------- Tick Number: 0-----------
pxcor: -70 pycor: -45 age: 0
pxcor: -61 pycor: 42 age: 0
pxcor: -91 pycor: -16 age: 0
---------- Tick Number: 1-----------
pxcor: -70 pycor: -45 age: 1
pxcor: -61 pycor: 42 age: 1
答案 0 :(得分:1)
在我们的Universe中,文件I / O总是按行而不是列。但是你可以利用Open Office电子表格(或excel,如果你必须)并且一步转换:
a,b,c,d,
Tick 1,5,4,2,
Tick 2,2,3,2,
Tick 3,3,5,-9,
Tick 4,3,-9,2,
进入这个,这就是我想你想要的:
a,Tick 1,Tick 2,Tick 3,Tick 4
b,5,2,3,3
c,4,3,5,-9
d,2,2,-9,2
打开csv文件,将数据复制到剪贴板,然后选择Paste Special,检查转置选项。