私はRscriptを複数のファイルに対して実行しようとしているユースケースがあります。シェルコマンドのRでの並列計算
for(i in 1:length(fileNames)){
generateTolerancesCommand = paste(c("Rscript ",modelScriptName,
" --inp=",paste(c("'",dimensionsFolder, "/", fileNames[i],"'"), collapse = ""),
" --sea=",seasonal,
" --freq=",freq,
" --outp=",paste(c("'",outputFolder,"/","'"), collapse=""),
" --tp=",tp,
" --sd=",sd,
" --end=",end,
" --op=",op,
" --tls=",tls,
" --pts=",pts,
" --userf=",paste(c("'",dimensionsFeedbackFolder, "/", fileNames[i],"'"), collapse = "")
),collapse="")
system(generateTolerancesCommand)
}
これは正常に動作しますが、それは通常、最終的には、現在のスクリプトを終了する約2時間かけて完了するために1つのループの周り3-4分かかる - 私は以下のスニペットを下に書かれています。私はそれを平行にすることでより良くできると思う。各反復では、独立したデータセットで作業できるR実行実行の独立したスニペットを作成しています。 並列のような並列ライブラリであるdoParallelをRで読み込もうとしましたが、usecaseに適用できる最適な方法を見つけることができません。これを経験した人は私に道を示唆することができますか?
スクリプトは何かを返していますか?グローバルな環境への書き込み?あなたは何から逃げたいのですか? –
はい、コマンドライン引数として渡された定義済みのフォルダに出力を生成します。 –
FYIでは、シェルクォートを手動で追加するのではなく、 'shQuote(str)'を使用します。それはOS特有であり、特定の文字などのエスケープ処理を行います。 – HenrikB