繁体   English   中英

使用Stata检查变量的存在

[英]Checking variables' existence using Stata

我已经问了一个问题,如何检查变量的存在。 尼克考克斯回答说。 然后我尝试修改答案并使用foreach循环,但它不起作用:

foreach var in var1 var2 var3 {
capture su `var', meanonly
if _rc == 0 {
local varMean = r(mean)
local varMin = r(min)
local varMax = r(max)
}
else display `var' "DOES NOT EXIST"
}

我还试图用of ,而不是in ......还是没有结果。 我收到一条消息var2 not found并且它停止执行。 capture必须以foreach为前缀吗? 我试过......没用?

这有点微妙。

鉴于var2不存在,Stata仍然被指示(在else分支内)

 display `var' "DOES NOT EXIST"

这被解释为

 display var2 "DOES NOT EXIST" 

所以,它首先看到了

 display var2

它倾向于解释为

 display var2[1] 

- 第一次观察中的值 - 但由于var2不存在,Stata抱怨。

你想要的是显示名称var2 ,而不是它的内容(再一次,不存在),修复只是

 else display "`var' DOES NOT EXIST"

双引号分隔符的位置至关重要,以强制display不存在的事物的名称。 不存在的事物的名称只是任意文本,Stata对此类文本没有任何问题。

总之,当喂到display

  "`macro'" 

是要显示的字符串,但是

 `macro' 

是要显示的变量或标量的名称,或者是要显示已定义内容的宏。

顺便说一下,你的循环只是覆盖了之前存储的结果集,但可能你会在适当的时候得到它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM