2017-02-12 5 views
0

Ich möchte Variablennamen generieren, die von der angegebenen Variablen games abhängen. Zum Beispiel, wenn games als 3 gegeben wird, ist das ErgebnisForvalues-Schleife zeigt falsche Syntax

ist

game1 = Liste von gleichmäßig verteilten Werte

game2 = gleiche usw.

Zwar gibt es mehrere Beispiele und Antworten auf ähnliche Fragen, ich kann nicht sehen, warum kann meinen Code nicht die Ergebnisse produzieren ich möchte

Stata zeigt Syntaxfehler für die folgende Schleife:

set obs 1000 

forvalues i = 1(1)games { 
generate game`i' = runiform() 
} 
+0

Dies ist keine vollständige Code, bis Sie eine Definition von 'games' haben. –

Antwort

2

Ist games wirklich eine Variable in Statas Sinn? Die gleiche Konstante immer wieder zu halten ist unnötig und ineffizient. Das Problem ist, dass forvalues Zahlen erwartet; Es führt keine Bewertungen im laufenden Betrieb durch. Aber andere Teile von Stata werden das tun.

Wenn Sie wissen möchten, dass Sie nur 3 Variablen dann könnten Sie tun, nur dies:

clear 
set obs 1000 

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

Oder Sie so etwas tun könnte:

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

Das ist nicht meine einleitenden Absatz widerspricht. Alle Makroauswertungen werden durchgeführt, bevor ein Befehl ausgeführt wird. also forvalues sieht 3, kein lokaler Makroname.

Wenn Sie wirklich eine Konstante in einer Variablen abhielten, so würde dies funktionieren:

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