J'ai beaucoup de variables dont le nom commence par le préfixe indoor
. Ce qui vient après indoor
n'est pas numérique (cela rendrait tout plus simple). Je veux une tabulation pour chacune de ces variables. J'ai donc écrit ce code:Dans Stata, comment affecter une longue liste de noms de variables à une macro locale?
local indoor indoor*
foreach i of local indoor {
tab `i' group, col freq exact chi2
}
Le problème est que indoor
dans la commande foreach
décide de indoor*
et non à la liste des indoor
questions, comme je l'espérais. Pour cette raison, la commande tab
est suivie de trop de variables (elle ne peut en gérer que deux) et cela entraîne une erreur.
La solution simple est de remplacer la première commande avec:
local indoor <full list of indoor questions>
Mais ce que je voudrais éviter, à savoir devoir trouver tous les noms de ces variables, puis de les coller dans le code . Il semble qu'il y ait une solution plus rapide pour cela, mais je ne peux pas y penser.
Cela mélange la syntaxe de -foreach- un peu. Le manuel d'aide indique que vous voulez utiliser "foreach i de varlist var1 var2" où var1 et var2 sont des variables OU utiliser "foreach i de local indoor", ne pas les combiner comme dans l'exemple ci-dessus. Ceci _works_ dans cet exemple, cependant, si vous aviez une liste dans le 'indoor 'local qui n'a pas adhéré aux règles de nommer des variables dans un -varlist-, alors l'expansion de varlist dans" foreach i de var 'indoor'" échouerait et laissez l'utilisateur confus. –
Ce n'est pas si grave, du moment que vous comprenez que Stata décompresse une macro locale/globale avant d'exécuter la commande. – Keith