Stata中的Numlist限制低于-help限制 - 建议

时间:2015-11-19 12:40:34

标签: stata

我正在使用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文件。

1 个答案:

答案 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 ,那么您可能也会遇到问题。我的建议是尝试报告。