47

私はいくつかのウェブスクレイピングをRin で自動化しcron、時には使用R CMD BATCHし、時には使用しますRscript

.Routどちらを使用するかを決定するために、主にファイルが必要かどうかに焦点を当てます。

しかし、SO でいくつかの質問への回答 ( thisまたはthisなど)を読むと、Rscriptよりも優先されるようR CMD BATCHです。

だから私の質問は:

  • 構文が少し異なり、ファイルをR CMD BATCH保存するのと保存しないという事実に加えて、2 つの主な違いは何ですか?.RoutRscript

  • どのような場合にどちらかを優先する必要がありますか? より具体的には、cron上記の仕事で、どちらが好まれますか?

  • まだ使用していませんが、 と の両方とどうlittler違うのですか?RscriptR CMD BATCH

4

2 に答える 2

36

私が理解していることから:

R CMD バッチ:

  • 入力ステートメントをエコーする
  • stdout に出力できません

スクリプト:

  • エコーしません
  • 標準出力への出力
  • ワンライナーで使用できます(つまり、入力ファイルなしで)

少し:

  • Rscriptが行うすべて
  • stdin からコマンドを読み取ることができます (パイプライン処理に役立ちます)
  • 起動時間の短縮
  • メソッド パッケージをロードする
于 2014-03-12T14:57:05.823 に答える
28

R CMD BATCH何年も前に私たちが持っていたすべてです。I/O が非常に困難になり、ファイルが置き去りにされます。

最初は littler で、次に Rscript で状況は改善しました。両方とも、次のような「シバン」行に使用できます。

 #!/usr/bin/r

 #!/usr/bin/Rscript

どちらも getopt や optparse などのパッケージで使用できます --- コマンドとして機能する適切な R スクリプトを作成できます。install.r pkga pkgb pkgcRプロンプトを独り占めすることなくコマンドラインから私のために呼び出すことができ、3つすべてとその依存関係をインストールするこのような単純なものから始めて、それらが数十ある場合:

#!/usr/bin/env r       
#
# a simple example to install one or more packages 

if (is.null(argv) | length(argv)<1) {
  cat("Usage: installr.r pkg1 [pkg2 pkg3 ...]\n")
  q()
}

## adjust as necessary, see help('download.packages') 
repos <- "http://cran.rstudio.com"

## this makes sense on Debian where no packages touch /usr/local 
lib.loc <- "/usr/local/lib/R/site-library"

install.packages(argv, lib.loc, repos)

Karl と同じように、同様の R スクリプトを呼び出す cronjobs があります。

2015-11-04 の編集: 先週の時点で、littler も CRANに追加されました。

于 2014-03-12T17:13:33.283 に答える