即時答案是否定的。由於多種原因,沒有類似的語法。
的if
限定符測試某些條件是否爲真分別爲每個觀測和是否一個文件存在不是通過觀察測試觀察的適當的條件。
完全不同的if
命令一次只測試一次是否是真的,看起來更合適。在實踐中,它不用於此目的,但要了解更多信息,請參見help ifcmd
。
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
呼叫更加複雜,並且有變量列表和/或選項,則可能由於其他原因而導致命令失敗。所以一般來說,檢查文件的存在似乎是一個更好的策略。