3

スタータの地で奮闘するRマニアです。R から Stata に「変換」しようとして、次の問題に遭遇しました。

R では、スクリプト ファイルが大きくなりすぎないようにするために、スクリプト ファイルを小さな部分に分けて記述し、小さな部分を読み込む 1 つのメイン R スクリプトを作成するのが好きです。

  1. source("script-1.R")
  2. コード何とか1
  3. コード blah2
  4. source("script-2.R")等......

私はStataで同じことをしたいと思っていて、やってみました

  1. do "script-1.do"
  2. コード何とか1
  3. コード blah2
  4. do "script-2.do"等......

script-1.doただし、たとえばマクロを作成すると、local bird 1 オブジェクト/マクロの鳥はメインスクリプトでアクセスできないか、にアクセスできないことがわかりましたscript-2.dobirdメイン スクリプトの内容を表示しようとすると、空になります。

どうしてこれなの?何かアドバイス?

4

2 に答える 2

7

を使ってみてくださいincludeincludedo(または)の違いについては、次をrun参照してください。

. インクルードを助ける

于 2012-04-24T16:57:15.523 に答える
6

localStata マクロは、との 2 つのグループに分類されますglobal。それらlocalは、それらが定義されたプロセスにのみ存在します (対話型セッション、do ファイル、またはprogram)。で何かを定義した場合script-1.do、それはそこにのみ存在し、return他の場所で表示するには明示的にする必要があります。(ただし、do ファイルでは実際にはそれができません。値を返すには a を定義する必要があり、コードのチャンクをsprogram, rclassに分割することをお勧めします) 。programglobal

R はそのオブジェクトのスコープをある程度制御できますが、マクロに対する Stata の制御と比較すると、ほとんど効果がありません。変数とデータ セットは Stata で引き続きグローバルであり、一度に複数のデータ セットを持つことはできません。Stata で驚くべきもう 1 つのことは、パラメーターの参照渡しです。これは、R の値渡しと比較して、多くのメモリを節約します。したがって、パッケージが異なれば強みも異なります。一方が他方よりも優れていると言うのは近視眼的です。

そうは言っても、使用するキースの提案includeはその場で正しい. あなたの質問の「なぜ」の部分を説明しようとしました。また、プログラム間で交換する必要があるのが数値である場合は、明示的に名前を付けて格納し、scalarすべてのプロセスから参照できるようにすることができます。

于 2012-07-12T14:54:08.233 に答える