4

次のようなローカル変数x1 , x2, and x3があります

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

今、私は次のように定義local xします

local x `x1' `x2' `x3' 

次に、for ループを次のように定義します。

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

問題は、stata が私にエラーを与えていることです (メモyは従属変数です)

invalid name

この点に関する提案は高く評価されます。

4

2 に答える 2

6

私はマクロを「遅延タイピング」と考えています。これが私が使用するアプローチです。

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

forvalue i = 1/3 {
    regress price `x`i''
}
于 2012-11-07T04:27:41.447 に答える
3

これらが変数であると仮定すると、Richardh のソリューションは明らかに機能します。ただし、必要ではありませんが、すべてのマクロの名前を変更する必要があります。

マクロを 2 回展開するだけです。

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'
}
于 2012-12-21T17:40:18.377 に答える