2016-07-14 38 views
0

我将netlogo的结果表导出为.csv,并希望每次都按顺序更改文件名。在netlogo中设置自动排序文件名

例如在会议的第一次运行会file_1.csv第二file_2.csv等

我看到如何手动做到这一点,但有没有办法自动呢?我猜它有什么关系

if file-exists? = TRUE 
    [file-open "file_?1.csv" 
     ask patches [ "say stuff"] 
    file-close] 

但我错过了一些东西。任何建议总是感激!

+0

这取决于你的意思是“第一次运行会话”。如果你的意思是“实验的第一次运行”,你可以使用'behaviorspace-run-number',它包含当前运行的编号(从1开始)。 – Alan

+0

我更喜欢它通过会话(每次打开程序)来完成它,但是这也起作用。但是,如何将它合并到文件名中?把文件名称上的“”直接粘贴起来,而不是运行代码 – Jesse001

+3

'(word“file_”behaviorspace-run-number“.csv)' – Alan

回答

1

file-exists?以字符串作为参数。所以你可以这样做:

let counter 0 
let saved? false 
while not saved? [ 
    let filename (word "file_" counter ".csv") 
    if not file-exists? filename [ 
    file-open filename 
    file-print "stuff" 
    file-close 
    set saved? true 
    ] 
    set counter counter + 1 
] 
+0

感谢你的提示。确保你没有使用请求补丁[]来调用它,我第一次犯了错误,并且每个补丁都创建一个输出文件(非常空间和时间密集型,特别是对于大型世界)。 – Jesse001