1. ホーム
  2. comments

[解決済み] コマンドラインでのStataデリミット

2022-02-16 10:33:08

質問

他の人が作成した.doファイルで作業しています。 この人は、ファイル全体でセミコロン区切り文字を使用しています。 私はこのファイルを調べて、何が起こっているのか確認しようとしています。 コードの一部を選択して、"Execute Selection (do)"ボタンを押すことでこれを行うのが好きです。 しかし、デリミタがこれを台無しにしているようです。 何か回避策はないでしょうか?

解決方法を教えてください。

あなたのDoファイルが次のようなものだったとします。

#delimit ;
set obs 
        10 ;
gen x = _n ;
gen y = x^2 ;
gen z = x
         ^3;

選択範囲をハイライトして "選択範囲の実行 (do)" を押すといつでも、Stata は一時的に自己完結した do ファイルを作成します。 cr を実行します。

"When a do-file begins execution, the delimiter is automatically set to 
carriage return, even if it was called from another do-file that set the
delimiter to semicolon." 

コンソールからそれらのコマンドを順次実行するわけではありません。したがって、上記のdoファイルの最初の2つのコマンドを選択した場合、一時的なdoファイルには #delimit 一方、最後の2つのコマンドを選択した場合、一時的なDoファイルにはこの呼び出しがなく、2行コマンドのシンタックスエラーが投げられます。

一つの解決策は、選択部分をコピーして、新しいDoファイルに貼り付けることです。 #delimit というコマンドを先頭にして、それを実行します。

また、Doファイルからセミコロンを取り除くスクリプトを書くこともできます。セミコロンで終わっていない行があれば、次の行を現在の行の最後に追加し、この行をもう一度チェックします。doファイルの構文がどの程度複雑かにもよりますが、これは多かれ少なかれ難しいことでしょう。