これが私の分析パイプラインであると仮定します。平均MU
と標準偏差SD
を使用して正規分布から10個の数値を生成し、それらを使用して別のことを実行したいとします。
MU <- 1 # the mean
SD <- .5 # standard deviation
NUMBER_TO_GENERATE <- 10
x <- rnorm(NUMBER_TO_GENERATE, mean=MU, sd=SD)
# ... more analysis here.
現時点では、これらのコマンドをコピーしてR端末に貼り付けています。これを「自動化」する方法はいくつかあります。
1.関数を書く
実行するコマンドのリストを1つの大きな関数にまとめ、パラメーターを関数パラメーターとして配置します。
myFunction <- function( MU, SD, NUMBER_TO_GENERATE ) {
x <- rnorm(NUMBER_TO_GENERATE, mean=MU, sd=SD)
# ... rest of analysis
}
これで、RI内で実行できるようmyFunction(1, .5, 10)
になり、入力する必要のあるコマンドの数が1に減ります。
2.スクリプトを書く
スクリプトファイルを書くことができましたmyScript.r
。これは、Rコマンドのリストであることを除けば、bashスクリプトに似ています。
元のコマンドのリストをそこに配置するか、関数をそこに追加して下部に追加のステートメントを配置することができますmyFunction(1,.5,10)
。
次に、 R内から、次のことができます。
source('myScript.r')
スクリプト内のすべてのRコマンドを実行します。
3.シェルから
このスクリプトをシェルから取得する場合はmyScript.r
、関数を含むファイルを作成することをお勧めします。
次に、 Rscriptをチェックアウトします(R内からのみ実行できます?Rscript
)。これはデフォルトでRがインストールされており、unix/windowsコマンドラインからRコマンドを実行するために使用します。
例えば:
[mathematical.coffee@bar ~]$ Rscript -e '1+1'
[1] 2
特に、方法1)と2)を組み合わせて、Rscript
次のようなことを行うことができます。
[mathematical.coffee@bar ~]$ Rscript -e 'source("myScript.R"); myFunction( 1, .5, 10 )'
関数を実行します。
または、もちろん、をに含めることもできmyFunction(1, .5, 10)
ます。myScript.R
その場合は、を行うことができますRscript myScript.R
。
前者の利点は、シェルスクリプトを実行したい場合です(質問でbashスクリプトについて言及したため、これについてのみ言及します)。bashスクリプトでは、次のようなことができます。
#!/bin/bash
MU=1;
SD=.5;
NUM=10;
Rscript -e "source('myScript.r'); myFunction($MU,$SD,$NUM)"
ただし、bashスクリプトとRスクリプトを混在させないことを主張したいと思います。前述したように、質問でbash / unixスクリプトについて言及したため、このオプションについてのみ言及します。