立即回答是否定的。出于多种原因,没有类似的语法。
限定符对if
每个观察分别测试某些条件是否为真,并且文件是否存在不是通过观察测试观察的合适条件。
完全不同的if
命令一次又一次地测试某事是否正确并且可能看起来更合适。在实践中,它不用于此目的,但要了解更多信息,请参阅help ifcmd
。
Stata 没有基于成对相同单引号的特殊语法' '
。
但是,Stata 在这里提供了一个单独的构造
confirm file file.txt
实际上,只要文件不存在且文件不存在,就会停止执行文件或程序。捕获错误的一般方案类似于
capture confirm file file.txt
if _rc == 0 insheet using file.txt
else {
<code if the file does not exist>
}
capture
被认为是吃掉confirm
命令的返回码。通常,如果命令有效并执行,则任何命令的返回码_rc
都是 0,否则返回一些非零值。有时会测试特定的非零代码。实验表明file not found
是返回码 601。查找错误码(在 [P] 错误中)的主要原因是为了传递官方外观的错误消息,但实际上了解零/非零规则是该标题下的主要细节.
此处的示例==
用于测试是否相等。
请注意,insheet using file.txt
如果文件不存在,则严格来说不是语法错误。就 Stata 的语言而言,这是合法的语法。然而,这是一个很好的区别:这是一个普通意义上的错误。
(稍后)有可能使整个过程短路
capture insheet using file.txt
if _rc != 0 {
<code if the file does not exist>
}
insheet
在这种情况下,文件的不存在是命令失败的假定解释。但是,如果insheet
调用更复杂,带有varlist和/或选项,则可能由于其他原因导致命令失败。所以一般来说,分离出文件是否存在的检查似乎是一个更好的策略。