我正在使用Stata命令synth
,它将 numlist 作为参数。
我需要 numlist 来获取2,000+个值。请注意,forvalues
在这种情况下不是一种可行的解决办法,除非我弄错了。我正在使用Stata MP 13.1。在help limits
中,它表示 numlist 的大小限制为2,500。但是,当我运行以下代码时,我收到错误代码“r(123)无效的numlist有太多的元素。”
foreach i of numlist 1/1601 {
display `i'
}
此代码运行时没有错误:
foreach i of numlist 1600{
display `i'
}
有没有办法允许比1,600个元素更大的 numlist ?另外,为什么help limits
告诉我有2,500人可以使用,但不允许超过1,600?
编辑添加:nlist
,用于解析 numlist ,最多指定1,600。那么也许1,600是最合适的?在这种情况下,help limits
页面似乎不正确。
要添加的第二个编辑:synth
是一个匹配命令,您可以为其提供一个 numlist 控制单元,以包含在匹配过程中。因此,如果您有一个包含2000个单位和10个时间段的面板,您可以指定1,999个单位作为潜在的控制单位。可以使用forvalues
,但需要稍微编辑synth
ado文件。
答案 0 :(得分:2)
尝试连接数字列表,或使用forvalues
:
set more off
// option 1, or some variation
numlist "1/1600"
local firstlist `r(numlist)'
numlist "1601/1603"
local all `firstlist' `r(numlist)'
foreach i of local all {
display `i'
}
// option 2
forvalues i = 1/1603 {
display `i'
}
forvalues
被记录为更快,所以如果可以,请使用它。
根据Stata风格,“宏中字符数”有限制,如help limits
中所述:
8681
165,200
1081511
然而,这不起作用:
foreach i of numlist `all' {
display `i'
}
报告
无效的numlist有太多元素 R(123);
因此,如果用户编写的命令解析为 numlist ,那么您可能也会遇到问题。我的建议是尝试报告。