可能な場合は、外部パラメータファイルでセット/実行/実験の間で異なるパラメータを設定します。次に、コードをソースしたり、関数を呼び出したり、パッケージを利用することもできますが、操作は外部で定義された小さなパラメータのセットによって決まります。
たとえば、JSONはこれで非常にうまく動作し、RJSONIO
とrjson
パッケージではファイルをリストに読み込むことができます。 parametersNN.jsonというリストにロードしたとします。 "parameters01.json" と負荷のようにすることを
{
"Version": "20110701a",
"Initialization":
{
"indices": [1,2,3,4,5,6,7,8,9,10],
"step_size": 0.05
},
"Stopping":
{
"tolerance": 0.01,
"iterations": 100
}
}
割引:次のように例がある
library(RJSONIO)
Params <- fromJSON("parameters.json")
、あなたはオフにして実行しています。 (注:私はR内の "parameters"リストを見ていれば、後でセットを識別できるように、私のパラメータファイル内でユニークなバージョン#を使用するのが好きです。)あなたのスクリプトを呼び出して、ファイル、例えば:
Rscript --vanilla MyScript.R parameters01.json
、その後は、プログラム内で、commandArgs()
関数からパラメータファイルを識別します。
コードを関数とパッケージに分割することができますが、これはおそらく短期間で一般化可能なバニラスクリプトを作成する最も簡単な方法であり、コードを分離する必要があるため長期的には良い方法です実行/データセット/実験依存パラメータの仕様から
編集:正確に言えば、私はJSONの入出力ディレクトリやファイル(またはパターン/接頭辞の名前)を指定することさえあります。これにより、1つのパラメータセットがどのように特定の出力セットにつながるかが非常に明確になります。間にあるものは、指定されたパラメータで実行されるコードですが、実際にコードを大きく変更しないでください。
更新: 3ヶ月、および実行の何千は、私の前の回答よりも賢く、私は、JSONのパラメータの外部記憶装置は、1-1000異なる実行するのに有用であることを言うと思います。パラメータまたは構成番号が数千以上の場合は、構成管理にデータベースを使用することに切り替えてください。それぞれの設定はJSON(またはXML)で始まる可能性がありますが、異なるパラメータレイアウトに取り組むには、SQLiteのようなデータベース(RSQLite
経由)が優れたソリューションである大規模なソリューションが必要です。
私は、元の質問に対して、いくつかのパラメータの変更を繰り返して、何回か繰り返すしかないことを認識していますが、進行中のリサーチで数百または数千のパラメータを変更すると、必要。 :)
+1これは2度だけ行うからです。答えはまた、分析のたびにどれくらい変わることになっているかにもよるが、いくつかのパラメータ、入力データ、 (1)主要なパラメータを抜き出してコードの先頭に定義すること[あるいは解析の本体を別のファイルとソース(source)に入れる]と(2)関数の中にコードの本体をラップします。あなたの親と機能環境の違いがここにあるのは私には分かりません。 –
+1これは私が最後にやったことです。私は、実行ごとに変更されたすべてのパラメータをリストにまとめました。次に、それぞれの実行の入力値を含む別々のリスト(構造が同じ)を作成しました。各反復ごとに、必要なリストをコピーし、結果の変数を出力リストに保存しました。言い換えれば、プリアンブルとクリーンアップへのコードのラッピングと、完了した仕事。できます。それは醜い場合は大丈夫です... – Andrie