2017-02-12 8 views
0

与えられた変数gamesに依存する変数名を生成したい。例えば 、gamesを3として与えられた場合、結果は不正な構文を示すForvalues-loop

game1ある=均一に分布した値

game2 =同一のリスト、等

同様の質問に複数の例と答えがあるが、

set obs 1000 

forvalues i = 1(1)games { 
generate game`i' = runiform() 
} 
012:私のコードは私が望む結果を生み出すことができない理由を私は見ることができない

のStataは、次のループの構文エラーを示します

+0

これは、完全なコードではありません。 –

答えて

2

gamesは本当にスタータの感覚の変数ですか?同じ定数を何度も保持することは、不必要かつ非効率的である。

問題はforvaluesが数字を表示することが予想されることです。即座に評価を実行することはありません。しかし、Stataの他の部分はそれを行います。あなたが知っている場合

あなたは、あなただけでこれを行うことができますだけで3つの変数をしたい:

clear 
set obs 1000 

forvalues i = 1/3 { 
    generate game`i' = runiform() 
} 

をそれとも、このような何かを行うことができます:私の最初のパラグラフと矛盾しない

clear 
set obs 1000 
local games = 3  
forvalues i = 1/`games' { 
    generate game`i' = runiform() 
} 

。すべてのマクロ評価は、コマンドが実行される前に実行されます。したがってforvaluesはローカルマクロ名ではなく3を参照します。

あなたが本当に変数に定数を保持していた場合、これは動作します:あなたはgames` `の定義を持つまで

clear 
gen games = 3 
set obs 1000 
forvalues i = 1/`=games[1]' { 
    generate game`i' = runiform() 
} 
関連する問題