2012-11-07 189 views
3

循環我有局部變量x1 , x2, and x3如下宏在在Stata

local x1 2 3 5 
local x2 5 9 7 
local x3 1 3 4 

現在我定義local x

local x `x1' `x2' `x3' 

接下來,我定義爲環路

foreach var of varlist `x'{ 
    reg y `var'} 

的問題是,stata給我的錯誤(注意y是依賴變量e)

invalid name 

在這方面的任何建議將不勝感激。

+0

是當地居民'X1 ','x2'和'x3'宏變量名?什麼是1-9? –

回答

5

我認爲宏是「延遲打字」。這是我使用的方法。

sysuse auto, clear 
local x1 weight 
local x2 headroom trunk 
local x3 length turn 

forvalue i = 1/3 { 
    regress price `x`i'' 
} 
+0

我也試過那個,但我有'x'而不是'x'。謝謝,它工作。 – Metrics

3

假設這些是變量,理查德的解決方案顯然工作。但是,它要求您重命名所有的宏,儘管這不是必需的。

你可以只擴展宏兩次:

local x x1 x2 x3 
foreach var of local x { 
    reg y ``var'' 
} 

你也可以這樣做,但你有問題,如果你的變量列表太長:

local x "`x1'" "`x2'" "`x3'" 
foreach var of local x { 
    reg y `var' 
}