Ich habe viele Variablen, deren Name mit dem Präfix indoor
beginnt. Was nach indoor
kommt, ist nicht numerisch (das würde alles einfacher machen). Ich möchte eine tabellarische Darstellung für jede dieser Variablen. Also schrieb ich diesen Code:In Stata wie weisen Sie einem lokalen Makro eine lange Liste von Variablennamen zu?
local indoor indoor*
foreach i of local indoor {
tab `i' group, col freq exact chi2
}
Das Problem ist, dass indoor
im foreach
Befehl löst zu indoor*
und nicht auf die Liste der indoor
Fragen, wie ich gehofft hatte. Aus diesem Grund folgen auf den Befehl tab
zu viele Variablen (es können nur zwei behandelt werden) und dies führt zu einem Fehler.
Die einfache Lösung ist es, den ersten Befehl ersetzen mit:
local indoor <full list of indoor questions>
Aber das ist, was ich möchte also vermeiden, zu haben alle Namen für diese Variablen zu finden und sie dann in den Code einfügen . Es scheint, dass es eine schnellere Lösung dafür gibt, aber ich kann mir keine vorstellen.
Dies mischt die Syntax von -foreach- ein bisschen. Das Hilfe-Handbuch gibt an, dass Sie "foreach i von varlist var1 var2" verwenden wollen, wobei var1 und var2 Variablen sind ODER "foreach i of local indoor" verwenden, kombinieren Sie sie nicht wie im obigen Beispiel. Diese _works_ in diesem Beispiel jedoch, wenn Sie eine Liste in der lokalen "indoor", die nicht die Regeln der Benennung von Variablen in einer -Varlist-hatte, dann varlist Erweiterung in "foreach i von var' indoor "würde fehlschlagen und lassen Sie den Benutzer verwirrt. –
Es ist nicht SO schlecht, solange Sie verstehen, dass Stata vor dem Ausführen des Befehls ein lokales/globales Makro entpackt. – Keith