2017-02-24 81 views
0

我試圖找到一種方法來做到這一點更整潔/更有效率的原因,我不相信我不能夠實現更高效的相同結果。高效的CSV提取和分配

我有一個csv文件,其中包含我的海龜的初始狀態的數據。每一行代表烏龜擁有的變量的值,每列代表一隻烏龜。對於每隻烏龜,我想初始化他的變量。在這一刻,我做了下面的方法(它的工作原理,但對我來說看起來效率不高):

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
;; GENERAL PROCEDURES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 

extensions [ csv ] 

breed[households household] 

globals ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
[ 
HH-data 
HHx-list 
HHy-list 
HHsize-list 
HHcolor-list 
] 

households-own ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
[ 
    HHx 
    HHy 
    HHsize 
    Hhcolor 
] 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
;; SETUP PROCEDURES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 

to startup ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 

set HH-data (csv:from-file "TestHH.csv" ";") 
show HH-data 
set HHx-list item 0 HH-data 
set HHy-list item 1 HH-data 
set HHsize-list item 2 HH-data 
set HHcolor-list item 3 HH-data 
show HHx-list 
let numberOfHH length HHx-list 
create-households numberOfHH 
(
foreach (sort households) HHx-list 
    [ [?1 ?2] -> ask ?1 
    [ 
     set xcor ?2 
    ] 
    ] 
) 
(
    foreach (sort households) HHy-list 
    [ [?1 ?2] -> ask ?1 
    [ 
     set ycor ?2 
    ] 
    ] 
) 
(
    foreach (sort households) HHsize-list 
    [ [?1 ?2] -> ask ?1 
    [ 
     set HHsize ?2 
    ] 
    ] 
) 
(
    foreach (sort households) HHcolor-list 
    [ [?1 ?2] -> ask ?1 
    [ 
     set color ?2 
    ] 
    ] 
) 
end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 

然而,在全球HH-數據已經全部我的數據存在。我怎麼能提取這個,並將烏龜變量分配給每隻烏龜,而不必爲每個聲明做出所有這些單獨的變量。我想這樣幾件事情:

set HH-data (csv:from-file "TestHH.csv" ";") 
show HH-data 

let numberOfHH length (item 0 HH-data) 
create-households numberOfHH 

(
    foreach (sort households) HH-data 
    [[?1 ?2] -> ask ?1 
    [ 
     set xcor ?2 
     set ycor ?2 
     set HHsize ?2 
     set HHcolor ?2 
    ] 
    ] 
) 

但後來我不斷收到錯誤。

回答

0

在我寫這個問題時發現了我自己,如何解決它。 認爲它可能對其他人有用,因此仍然發佈它。

set HH-data (csv:from-file "TestHH.csv" ";") 
;;show HH-data 

let numberOfHH length (item 0 HH-data) 
create-households numberOfHH 

(
    foreach (sort households) (item 0 HH-data) (item 1 HH-data) (item 2 HH-data) (item 3 HH-data) 
    [[?1 ?2 ?3 ?4 ?5] -> ask ?1 
    [ 
     set xcor ?2 
     set ycor ?3 
     set HHsize ?4 
     set color ?5 
    ] 
    ] 
)