2014-02-23 36 views
23

我使用Rcron中自動執行一些網頁掃描,有時我使用R CMD BATCH,有時我使用Rscript爲什麼(或什麼時候)Rscript(或小魚)比R CMD BATCH好?

決定使用哪一個我主要關注如果我想要.Rout文件。

但閱讀的答案,這裏的一些問題在SO(如thisthis)似乎Rscript最好R CMD BATCH

所以我的問題是:

  • 除了這個事實,語法是有點不同的,R CMD BATCH節省了.Rout文件,而Rscript沒有,什麼是他們兩個人之間的主要區別?

  • 我應該什麼時候比另一個更喜歡?更具體地說,在上面提到的cron工作中,他們中的一個是首選嗎?

  • 我還沒有使用littler,它與RscriptR CMD BATCH有什麼不同?

回答

15

R CMD BATCH是我們幾年前所有的。它使得I/O非常困難並且將文件留在後面。

事情變得更好了,首先與littler,然後與Rscript。既可以用於「家當」線,如

#!/usr/bin/r 

#!/usr/bin/Rscript 

兩者都可以用類似的getopt和optparse包使用---允許你編寫正確的[R腳本,可以爲命令行事。如果有幾十人,從簡單的像這樣,我可以在命令行調用爲install.r pkga pkgb pkgc並且將安裝全部三個和他們的依賴關係),我不佔用將R提示:

#!/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) 

而就像卡爾,我有cronjobs調用類似的R腳本。

編輯於2015-11-04:截至上週,littler is now also on CRAN

20

從我的理解:

[R CMD批次:

  • 呼應輸入語句
  • 不能輸出到stdout

RSCRIPT:

  • 不會回
  • 輸出到stdout
  • 可以按一個襯墊被使用(即無輸入文件)

利特勒:

  • 所有RSCRIPT確實
  • 可以讀取從stdin
  • 更快的啓動時間
  • 負載的方法的命令爲流水線(有用)包

In p ractice我使用Rscript在命令行或cron中運行腳本。

+0

Littler可以做任何事情,Rscript可以在它之前,更快地啓動並且默認加載方法包。 Rscript是「簡單」更普遍的,因爲它恰好與R一起發貨。 –

+0

@DirkEddelbuettel關於通過'commandArgs(TRUE)'捕獲的bash傳遞的參數,它們是否以某種方式支持?我在'小人'裏看不到任何信息。 – jangorecki

+0

剛剛找到'argv',它似乎沒有記錄。 – jangorecki

相關問題