我正在写一个.do
检查一些变量是否存在.dta
文件以及检查这些变量的某些值是否存在。但是,我的代码在遇到无效的变量名称时停止执行。
我知道我混合了 Java 和 Stata 编码,这是完全不合适的,但是有什么办法我可以做这样的事情:
try {
su var1
local var1_mean=(mean)var1
local var1_min=(min)var1
local var1_max=(max)var1
...
}
catch (NoSuchVariableException e) {
System.out.println("Var1 does not exist")
}
// So that the code does not stop executing...?
简短的回答是肯定的。一个稍微长一点的答案是,通过类比 Java 来猜测语法可能是什么,成功的机会很小。最好阅读 Stata 的文档,例如首先浏览 [P] 手册中的主要条目。
这里被困的问题是没有var1
存在。这段代码是合法的,或者说我相信:
capture su var1, meanonly
if _rc == 0 {
local var1_mean = r(mean)
local var1_min = r(min)
local var1_max = r(max)
}
else display "var1 does not exist"
这个想法有两个方面。capture
吃掉它前缀的命令的任何错误,但仍然可以访问返回代码_rc
。非零返回代码是错误代码。
相关命令是confirm
, e.g.
capture confirm var var1
检查一个变量var1
存在。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)