Loops 如何在循环的最后一次迭代中添加outreg2的tex选项
我正在使用社区贡献的命令Loops 如何在循环的最后一次迭代中添加outreg2的tex选项,loops,stata,Loops,Stata,我正在使用社区贡献的命令outreg2生成一个LaTeX表 根据帮助文件: outreg2无法将TeX格式的表相互追加,因此 回归必须以ASCII格式追加,直到最后一次回归, 它附加了tex选项 因此,当我在一个循环中运行几个回归时,我需要以某种方式确定最后一个迭代,以便添加tex选项 在我自己的尝试中,通过使用localappend我设法为第一个循环指定选项replace,并为后续循环指定选项append: global dvars var1 var2 var3 local append "
outreg2
生成一个LaTeX
表
根据帮助文件:
outreg2无法将TeX格式的表相互追加,因此
回归必须以ASCII格式追加,直到最后一次回归,
它附加了tex选项
因此,当我在一个循环中运行几个回归时,我需要以某种方式确定最后一个迭代,以便添加tex
选项
在我自己的尝试中,通过使用localappend
我设法为第一个循环指定选项replace
,并为后续循环指定选项append
:
global dvars var1 var2 var3
local append "replace"
foreach dvar in $dvars {
reg `dvar' treatment
outreg2 using "file", `append'
local append "append"
}
是否有类似的方法将选项
tex
添加到最后一个循环 您可以使用字数计数
宏扩展功能(请参阅帮助扩展\u fcn
)来识别循环列表中的元素数,并向循环添加计数器以计数循环数。使用if
命令(help-ifcmd
)可以识别最终循环,并相应地更改outreg2
的选项
请注意对foreach
循环语法的更改,因为您直接使用的是global
global dvars var1 var2 var3
local iterations : word count $dvars
local i = 0
foreach dvar of global dvars {
// augment iteration counter
local ++i
// define options (over-specified, but you can revise as desired)
if `i' == 1 local options "replace"
else if `i' > 1 & `i' < `iterations' local options "append"
else if `i' == `iterations' local options "append tex"
// run regression & outreg2
// for now, just display command
*reg `dvar' treatment
di as result `"outreg2 using "file", `options'"'
}
di as result "number of loops = `i'"
全局dvars var1 var2 var3
本地迭代:字数$dvars
局部i=0
全球dvar的每个dvar{
//增广迭代计数器
本地++i
//定义选项(过度指定,但您可以根据需要进行修改)
如果'i'==1本地选项“替换”
如果'i'>1&'i'<'iterations'本地选项“append”
如果'i'=='iterations'本地选项“append tex”
//运行回归&outreg2
//现在,只需显示命令
*reg“dvar”治疗
di作为结果`“outreg2使用“文件”`options''
}
di作为结果“循环数=`i'”
您可以使用字数计数
宏扩展功能(请参阅帮助扩展功能)
)来识别正在循环的列表中的元素数,并在循环中添加计数器以计数循环数。使用if
命令(help-ifcmd
)可以识别最终循环,并相应地更改outreg2
的选项
请注意对foreach
循环语法的更改,因为您直接使用的是global
global dvars var1 var2 var3
local iterations : word count $dvars
local i = 0
foreach dvar of global dvars {
// augment iteration counter
local ++i
// define options (over-specified, but you can revise as desired)
if `i' == 1 local options "replace"
else if `i' > 1 & `i' < `iterations' local options "append"
else if `i' == `iterations' local options "append tex"
// run regression & outreg2
// for now, just display command
*reg `dvar' treatment
di as result `"outreg2 using "file", `options'"'
}
di as result "number of loops = `i'"
全局dvars var1 var2 var3
本地迭代:字数$dvars
局部i=0
全球dvar的每个dvar{
//增广迭代计数器
本地++i
//定义选项(过度指定,但您可以根据需要进行修改)
如果'i'==1本地选项“替换”
如果'i'>1&'i'<'iterations'本地选项“append”
如果'i'=='iterations'本地选项“append tex”
//运行回归&outreg2
//现在,只需显示命令
*reg“dvar”治疗
di作为结果`“outreg2使用“文件”`options''
}
di作为结果“循环数=`i'”
无需查找迭代编号或创建计数器宏。在这种情况下,foreach
循环的最后一次迭代发生在调用dvars
的最后一个变量时
下面是一个使用Stata的auto
toy数据集的最小可复制示例:
sysuse auto, clear
local dvars mpg weight length
local append "replace"
foreach dvar in `dvars' {
display "regress `dvar' i.foreign"
if `dvar' == length local tex tex
display `"outreg2 using "file", `append' `tex'"'
local append "append"
}
regress mpg i.foreign
outreg2 using "file", replace
regress weight i.foreign
outreg2 using "file", append
regress length i.foreign
outreg2 using "file", append tex
请注意,最好使用本地宏,而不是全局宏
只要有可能。无需查找迭代编号或创建计数器宏。在这种情况下,
foreach
循环的最后一次迭代发生在调用dvars
的最后一个变量时
下面是一个使用Stata的auto
toy数据集的最小可复制示例:
sysuse auto, clear
local dvars mpg weight length
local append "replace"
foreach dvar in `dvars' {
display "regress `dvar' i.foreign"
if `dvar' == length local tex tex
display `"outreg2 using "file", `append' `tex'"'
local append "append"
}
regress mpg i.foreign
outreg2 using "file", replace
regress weight i.foreign
outreg2 using "file", append
regress length i.foreign
outreg2 using "file", append tex
请注意,最好使用本地宏,而不是全局宏
只要有可能