基本的に、私はデータを収集、並べ替え、分析、および表示するための約10〜15の個別のスクリプトファイルを使用して、Rでかなりの予測モデルを構築しました。すべてを1つの巨大なスクリプトファイルにまとめるのではなく、ある程度のモジュール性を維持して、以前にMatlabで行ったように、制御スクリプトまたは同等の制御メカニズムから各部分を実行したいと思います。これはRで可能ですか?
このスレッドとそれに関連するスレッドを読みましたが、この正確な答えを見つけることができませんでした。 Rソースコードの整理
source
関数を探しているだけだと思います。見る ?source
。私はよくsource
他の.R
ファイル。
私は新しい開発者であり、誰も例を挙げていないので私のために働いた例で答えています。 source( "myscript.R")を使用して別のRスクリプト "myscript_A.R"または "myscript_B.R"を呼び出す例は次のとおりです-
if(condition==X){
source("myscript_A.R")
}else{
source("myscript_B.R")
}
私はあなたが説明したことを行い、別々のRファイルにコードのチャンクを分割し、source(this)とsource(that)を実行してきましたが、ソース関数(サブルーチン/スクリプトファイルではなく)がより良い方法です。
スクリプトをこの方法で開発し、それにこだわった理由として考えられる3つの理由と、関数への切り替えが理にかなっている3つの理由を次に示します。
1)スクリプトが失敗したときに直接デバッグしたかった(単一のグローバル環境ですべての変数とそのステータスを追跡できる)。
2a)後で保持する必要がある変数がわかりませんでした(どの変数を関数に入れるか、どの変数を関数から出力するかを追跡したくありませんでした)
2b)私たちはすべて(パラメーター/変数、設定、データのさまざまな部分)に多数の変数を持っているため、関数の内外にすべてを詰め込むことは現実的ではありません。
関連SO:
モジュール化の必要性を理解しましたが、関心のある実行用の単一のスクリプトを作成しないでください。複数のスクリプトをソーシングすると、ファイルに書き込む(CPUサイクルを浪費する)場合を除いて、スクリプト間で変数を渡すことができないという複雑さが生じます。各スクリプトのテキストコンテンツを読み取るマスタースクリプトを作成し、マスタースクリプトを作成して、そのスクリプトを実行することもできます。