Stata中foreach命令报'{ required'及'varlist required'问题求助
Stata循环报错的问题解决方法
核心问题:宏引用方式错配
你定义的allvars是本地宏(local),但循环时误用了全局宏的引用规则,导致Stata无法识别变量列表。
两种正确的循环写法
把//2)段里报错的foreach语句改成以下任意一种即可:
写法1:用in关键字直接引用本地宏
foreach var in `allvars' { // 原有统计逻辑代码保持不变 }
写法2:用of varlist语法正确调用本地宏
foreach var of varlist `allvars' { // 原有统计逻辑代码保持不变 }
报错原因拆解
- 用
$allvars时,Stata会把它当成全局宏查找,但你根本没定义过名为allvars的全局宏,所以抛出{ required错误。 - 你尝试的
foreach var of varlistallvars'如果仍报错,大概率是allvars`里的变量名和数据集不匹配(比如某个变量不存在),要先验证变量是否存在:// 在循环前加这行,检查所有变量是否都在数据里 describe `allvars'
修正后的完整//2)段代码
//2)Create summary statistics table: scalar drop _all foreach var in `allvars' { sum `var' if treatment==0 scalar `var'_N=r(N) scalar `var'_c=r(mean) scalar sd`var'_c=r(sd) reg `var' treatment, cluster(areaid) mat beta`var'=e(b) scalar `var'_d=beta`var'{1,1} test treatment=0 scalar pval_`var'=r(p) matrix Table1A = {nullmat(Table1A) \ `var'_N, `var'_c, sd`var'_c, `var'_d, pval_`var'} } matrix rownames Table1A = `allvars' matrix colnames Table1A = Obs Control_mean Control_sd Difference p_val mat2txt, matrix(Table1A) saving("$outputdir/table1a.txt") replace
内容的提问来源于stack exchange,提问作者Mélanie Bongers
相关产品推荐
相关产品推荐

