Loops 在Stata中的循环内运行程序

Loops 在Stata中的循环内运行程序,loops,stata,Loops,Stata,我试图在循环中运行一个程序,但是我得到了 -Break-- r(1); 这是我的剧本: clear all forvalues i=1/5{ sysuse auto if rep78==`i' capture program drop testpro program define testpro,eclass preserve tabstat price mpg headroom,stat(mean) save mat avg=r(

我试图在循环中运行一个程序,但是我得到了

-Break--
r(1);
这是我的剧本:

 clear all
    forvalues i=1/5{
    sysuse auto if rep78==`i'
    capture program drop testpro
    program define testpro,eclass
    preserve 

    tabstat price mpg headroom,stat(mean) save
    mat avg=r(StatTotal)
    ereturn post avg
    restore 
    end
    }
    --Break--
    r(1);

    end of do-file

    --Break--
    r(1);

我们将非常感谢您在这方面提供的任何帮助。

这里有几个问题。首先,与使用
use
不同,不能使用
if
子句
sysuse

无需在循环的每次迭代中重新定义程序。定义它,然后循环

我也不知道你为什么需要一个程序,但这是一个品味的问题,或者这仅仅是一个教学的例子

下面代码中的命令
estadd
是SCC中的
estout
套件的一部分

clear all

capture program drop testpro
program define testpro, eclass
tabstat price mpg headroom, stat(mean) save
quietly estadd matrix avg = r(StatTotal), replace
end

forvalues i=1/5 {
    sysuse auto, clear
    keep if rep78==`i'
    testpro
    matrix list e(avg)
}

是的,我的问题需要一个程序。谢谢!