我正在尝试编写程序,并希望迭代存储在e()中的所有标量。我希望控制台上显示的列表响应ereturn list
- 通常包括e(N)
,e(r2)
和& c。
我无法对其进行硬编码,因为用户可以使用estadd
添加到列表中。
我希望能够输入类似的内容:
levelsof e_scalars
return list
并看到类似的内容:
macros:
r(escalars) : "e(N) e(r2) e(df)"
有没有办法退回该名单?
感谢。
答案 0 :(得分:1)
这会让你走近:
sysuse auto
reg price mpg
estadd scalar mystat 42
ereturn list
local scalars: e(scalars)
di "`scalars'"
foreach element of local scalars {
di "e(`element') is " e(`element')
}
编程手册(第267页)中的“Macro extended functions for names of stored results”下记录了这一点。
答案 1 :(得分:1)
扩展@Dimitriy的回答:
clear all
set more off
sysuse auto, clear
regress price mpg
ereturn list
local groupscalars: e(scalars)
foreach element of local groupscalars {
local e_scalars "`e_scalars' e(`element')"
}
estadd local mymacro = `"`e_scalars'"'
ereturn list
给你:
macros:
e(mymacro) : "e(N) e(df_m) e(df_r) e(F) e(r2) e(rmse) e(mss) e(rss) e(r2_a) e(ll) e(ll_0).."
e(cmdline) : "regress price mpg"
e(title) : "Linear regression"
e(marginsok) : "XB default"
e(vce) : "ols"
e(depvar) : "price"
e(cmd) : "regress"
e(properties) : "b V"
e(predict) : "regres_p"
e(model) : "ols"
e(estat_cmd) : "regress_estat"