Stata:ローカルマクロが未定義かどうかを確認します



Stata Check If Local Macro Is Undefined



解決:

未定義の場合、マクロの内容は空になります。あなたはこれを行うことができます:

欠落している場合( `'` mymacroname' ''){display 'マクロは未定義です'}

マクロに数値が含まれる場合、引用符は実際には必要ありません。 NSMissing(x)関数は、文字列と数値を処理できます。テストのようなものです(x == '' | x ==。)配置`'周り'`mymacroname' 'を使用すると、マクロに引用符を含めることができます。ローカルmymacroname`'foo''` 'bar' '。




質問は、これを行うための慣用的な方法と、Stataプログラマー全体を求めました

if'`macroname ''!= ''

マクロが定義されているかどうかの最も一般的に使用されるテストとはほど遠いです。マクロは、定義時に文字列を含みます。これが一般的な使用法です。数字の使用は特殊なケースです。




OPは、ローカルが未定義かどうかをテストする方法があるかどうかを尋ねました。定義済み/未定義の概念は、Stataには実際には存在しません(これは、Stataを初めて使用するユーザーには混乱しますが、プログラミングを初めて使用するユーザーには混乱します)。

これについて考えるよりスタタのような方法は、ローカルが欠落しているか、欠落していないかどうかです。ローカルが定義されていない場合は、欠落していると見なされます。ただし、ローカルが空の文字列などの欠落した値に定義されている場合''、それも行方不明と見なされます。

したがって、Stataには、ローカルの文字列が未定義であるか定義されているかを区別する方法はありませんが、欠落している値、つまり空の文字列が含まれています''。すでに与えられた両方の答えは、localA(定義されていますが空の文字列として)および以下の例のlocalB(未定義):



* localAを空の文字列locallocalA ''に開始します*これらの条件は両方とも、missing( '`localA' ')の場合は同じように評価されます('` localB '')*これらの条件は両方とも '`localA' 'の場合は同じように評価されます! = '' if'` localB ''!= ''