do-file を起動して do-file のパスを変数として復元することは可能ですか?
プロジェクトを共著者と (Dropbox 経由で) 共有しています。したがって、フォルダの構造 (データ、ログなど) は両側で同じです。
しかし、フォルダーは私の共著者のファイルシステムと私のファイルシステムで異なって配置されています。したがって、フォルダーのパスなどにとらわれない do-file を作成すると便利です。
プロジェクトへのパスをハードコーディングしないでください。
ありがとうございました!
do-file を起動して do-file のパスを変数として復元することは可能ですか?
プロジェクトを共著者と (Dropbox 経由で) 共有しています。したがって、フォルダの構造 (データ、ログなど) は両側で同じです。
しかし、フォルダーは私の共著者のファイルシステムと私のファイルシステムで異なって配置されています。したがって、フォルダーのパスなどにとらわれない do-file を作成すると便利です。
プロジェクトへのパスをハードコーディングしないでください。
ありがとうございました!
この地域では、次のようなさまざまなことができます。
ディレクトリの名前を引数としてdo-fileに渡します。例えば、
do mydo d:/myproject/data1812
ファイルを起動しmydo.do、特定のディレクトリの引数をdo-fileに渡します。do-file内で、次のように引数を取得できます。
local myfolder "`1'"
つまり、渡されたものはローカルマクロ1として渡されます(他の引数はローカルマクロ2、3などになります)。
一般的に場所への参照、特にファイルがdo-file内で相対的であることを確認し、親ディレクトリからdo-fileを実行します。
メインのdo-file内で場所のグローバルマクロを使用してから、最初に実行するマスターdo-file内でそれらを再定義します。
注:Windowsでも、スラッシュを使用することをお勧めします。Stataが翻訳します。また、スペースが埋め込まれている場合は、全体を二重引用符で囲んでください。
do mydo "d:/my project/data1812"
2つ目は、特定の場所で配線しないという好みに最も近いようです。ただし、さまざまな場所のファイルを使用している場合は、Stataにファイルの場所を何らかの方法で伝える必要があります。
上記のニックのコメントは答えを与えます: c(pwd). dataこれにより、フォルダー内のデータセットを開くなど、後のコマンドの相対的な開始点が得られます。
use `c(pwd)'/data/yourdata, clear
問題は、do ファイルをダブルクリックしても、Stata が作業ディレクトリをそのフォルダーに設定しないことかもしれません (データセットの場合はそうですが、これは一貫性がなく、必ずしも役に立ちません)。
profile.doStata アプリケーション フォルダ内のファイルによって、起動時に設定されたグローバル マクロにプロジェクト フォルダ パスを書き込む以外に、この問題に対する特定の解決策はありません。
私は学生のクラスを教えて、そのようなシステムで作業ディレクトリを設定してもらいます。それは問題なく動作します。