2013-07-12 48 views
3

我讨厌用这个问题烦恼你们,但我得到错误“{required”,尽管我所有的循环似乎都是正常打开(并关闭),不幸的是Stata不会不会告诉你错误在哪里,所以我无法弄清楚为什么会发生这种情况。顺便说一下,如果我用if语句取出append_replace部分,我仍然得到相同的错误,所以我不认为它来自该部分。这里是我的代码:“{required”in stata嵌套循环

local vars = "any_rate resp_rate circ_rate weight_rate diabetes_rate gallstones_rate mental_rate cancer_rate std_rate died_rate" 
local dates = "1947 1974" 
foreach var of local `vars' { 
    foreach i of local `dates' { 
     forvalues j = 500(100)2500 { 
      local append_replace = "append" 
      if "`var'"=="any_rate" { 
       if "`i'" == "1947" { 
        if `j' == 500 { 
         local append_replace = "replace" 
        } 
       } 
      } 
      reg `var' post`i' dobdistfrom`i'change dobdistfrom`i'changesq post`i'_dist`i' post`i'_dist`i'sq if dobdistfrom`i'change < `j' & dobdistfrom`i'change > -`j', cluster(dobdistfrom`i'change) 
       outreg2 using Prelim_RD_Estimates.xls, `append_replace' excel dec(3) 
     } 
    } 
} 

非常感谢您的帮助!

回答

4

我认为问题出在防止{被阅读的地方。

原始版本问题:

local dates = "1947 1974" 
foreach i of local `dates' { 
    di `i' 
    } 

修正版本:

local dates = "1947 1974"  
foreach i in `dates' { 
    di `i' 
    } 

你也可以只省略引号 “的foreach当地日期的我” 在你原来的建设。

+1

代码'foreach我本地日期'(没有评估员报价)也将工作。 –

+0

非常感谢Dimitriy和RedOwl表示,我只是从'dates'和'vars'中删除了评估者的引用,而且效果很好。 –