私の問題:
myscript.R
構成ファイルを使用するRスクリプトがあります。たとえばconfig.xml
、そのようなスクリプトをジョブスケジューラに送信するための最良の方法は何ですか(たとえば、qsubを使用)。
スクリプトとファイルを、bashスクリプトに埋め込まれているCまたはFortranの実行可能ファイルなどと同じように使用できるようにしたいと思います。
私が現在FORTRANをどのように使用しているか:
fex
これは、私が呼び出す次のようなコンパイル済みのFortran実行可能ファイルで使用するアプローチの例ですfscript.sh
。
!#/bin/bash/
mpirun [arguments] "fex" -f $1
上記は、次のfscript.sh
ように構成ファイルを読み取るための指示とともにクラスターに送信できます。
qsub [arguments] fscript.sh 1 config.xml
現在、類似した方法でRを使用する方法:
同様の方法でRを実行するために、bashスクリプトを使用していますrscript.sh
#!/bin/bash
CONFIG=$1
env $CONFIG R --vanilla < myscript.R
これは、コマンドラインで実行できます。
qsub [arguments] rscript.sh config.xml
rscript.R
のようなものが含まれている場所
library(XML)
config <- Sys.getenv("CONFIG")
config <- xmlList(xmlParse(config.xml))
myfunction(config)
私の質問
- Rscriptまたはコンパイラは、現在使用しているbashよりも堅牢なアプローチを提供しますか?
- どのような条件下で一方が他方よりも適切でしょうか(長所と短所は何ですか)?
- どちらの場合でも、構成ファイルを渡すにはどうすればよいですか?
私がこれまでにしたこと
rscript.sh
上記のbashスクリプトを考え出すことに加えて、チュートリアルRscript
とコンパイラのドキュメントを読みましたが、これらが一方が他方よりも優先されるコンテキストであるかどうかはわかりません。また、どちらのコンテキストでも構成ファイルを渡すための最良の方法は明確ではありません。
この質問は他の質問に関連しています。たとえば、Rプログラムから実行可能ファイルを作成する方法は何ですか。Rコンパイラは存在しますか?。ただし、コンパイルされたコードを使用するためにそれが不可欠であるとは思いません。