2014-02-23 39 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

相关问题