2016-07-14 37 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