2

私の問題:

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)

私の質問

  1. Rscriptまたはコンパイラは、現在使用しているbashよりも堅牢なアプローチを提供しますか?
  2. どのような条件下で一方が他方よりも適切でしょうか(長所と短所は何ですか)?
  3. どちらの場合でも、構成ファイルを渡すにはどうすればよいですか?

私がこれまでにしたこと

rscript.sh上記のbashスクリプトを考え出すことに加えて、チュートリアルRscriptコンパイラのドキュメントを読みましたが、これらが一方が他方よりも優先されるコンテキストであるかどうかはわかりません。また、どちらのコンテキストでも構成ファイルを渡すための最良の方法は明確ではありません。

この質問は他の質問に関連しています。たとえば、Rプログラムから実行可能ファイルを作成する方法は何ですか。Rコンパイラは存在しますか?。ただし、コンパイルされたコードを使用するためにそれが不可欠であるとは思いません。

4

2 に答える 2

5

何と関係がcompilerありますか?RコードをRインタープリター用のバイトコードにコンパイルするため、疑わしいことを実行できない場合があります。

スクリプティングには、Rscript(どこでも利用可能)または少し( Rscriptより前のもの)を使用します。

私たちは実際にこのスクリプトの目的のために少し明示的に書きました、そして私の「RでのHPCの紹介」の話(プレゼンテーションページを参照)は実際にそのようなスクリプトをslurmスケジューラー/リソースマネージャーに提出する例を持っ います(私はアクセスできなかったので)。qsub

Rscriptコマンドライン解析に関連する他の多くの質問がここにあります。それはあなたが始めるはずです。

于 2012-08-29T17:58:33.963 に答える
1

Dirkの回答と別の質問であるRスクリプトのコマンドライン引数の解析に続いて、構成ファイルの名前を受け入れるR実行可能ファイルを作成できる次のソリューションを考え出しました。

OPからのmyscript.shrscript.Rは次のようにマージできますnewrscript.R

#!/usr/bin/Rscript
config.file <- commandArgs(trailingOnly = TRUE)
config <- xmlParse(config.file)
myfunction(config)

これは、コマンドラインから呼び出すことができ、元の使用法と非常によく似た方法で構成ファイルの名前を渡しますmyscript.sh

./newrscript.R config.xml
于 2012-08-29T20:49:43.337 に答える