2017-02-24 4 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-データにすでに私のすべてのデータが存在しています。どのように私はこれを抽出し、これらすべての個々のfor-eachステートメントを作成することなく、各タートルにタートル変数を割り当てることができます。私はこのようないくつかのことを試しました:

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 
    ] 
    ] 
) 
関連する問題