当面の答えはノーです。いくつかの理由から、その構文のようなものはありません。
修飾子は、観測ごとに特定のif
条件が真であるかどうかを個別にテストし、ファイルが存在するかどうかは、観測ごとに観測をテストするための適切な条件ではありません。
まったく異なるif
コマンドは、何かが真であり、より適切に見えるかどうかを 1 回だけテストします。実際には、この目的には使用されませんが、詳細については、 を参照してくださいhelp ifcmd
。
Stata には、対になった同一の一重引用符に基づく特別な構文はありません' '
。
ただし、Stata はここで別の構造を提供します。
confirm file file.txt
実際には、ファイルが存在せず、ファイルが存在しない場合は常に do ファイルまたはプログラムを停止します。エラーをキャッチする一般的なスキームは次のようなものです
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
コマンドの失敗の推定説明です。ただし、varlistやオプションを使用insheet
して呼び出しがより複雑な場合は、他の理由でコマンドが失敗する可能性があります。したがって、一般に、ファイルの存在のチェックを分離することは、より良い戦略のようです。