47

我正在使用Rin自动化一些网络抓取,cron有时我使用R CMD BATCH,有时我使用Rscript.

要决定使用哪一个,我主要关注是否需要该.Rout文件。

但是在 SO 中阅读一些问题的答案(如thisthis)似乎RscriptR CMD BATCH.

所以我的问题是:

  • 除了语法略有不同并且R CMD BATCH保存.Rout文件而Rscript没有保存文件这一事实之外,它们两者之间的主要区别是什么?

  • 我什么时候应该更喜欢一个而不是另一个?更具体地说,在上述cron工作中,他们中的一个是首选吗?

  • 我还没用过,和littler两者有什么区别?RscriptR CMD BATCH

4

2 回答 2

36

据我了解:

R CMD 批处理:

  • 回显输入语句
  • 无法输出到标准输出

脚本:

  • 不回显
  • 输出到标准输出
  • 可以单行使用(即没有输入文件)

小:

  • Rscript 所做的一切
  • 可以从标准输入读取命令(对流水线很有用)
  • 更快的启动时间
  • 加载方法包
于 2014-03-12T14:57:05.823 回答
28

R CMD BATCH是我们多年前所拥有的。它使 i/o 变得非常困难,并留下文件。

事情变得更好了,首先是 littler,然后是 Rscript。两者都可用于“shebang”行,例如

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

就像 Karl 一样,我有 cronjobs 调用类似的 R 脚本。

编辑于 2015-11-04: 截至上周,litter 现在也在 CRAN 上

于 2014-03-12T17:13:33.283 回答