在命令行(terminal)上使用R脚本的最好方法是什么?
使用R脚本从命令行执行简单的绘图非常方便。 但是,从bash脚本运行R并不方便。 理想可能是类似的东西
#!/path/to/R ... 要么
 #!/usr/bin/env R ... 
但是我还没能做出这些工作。
 另一个select是将脚本纯粹保存在R中,例如script.R ,并用R --file=script.R或类似的方法调用它。 但是,有时脚本将依赖于模糊的命令行开关,在这一点上代码的一部分存在于脚本之外。 例如:通过本地.Rprofile从bash偷东西到R中,所需的开关就是一切--vanilla除了--no-init-file之外,所有的开关都是--vanilla 。 
另一个选项是一个bash脚本来存储R标志并且可以无痛地执行,然后调用R脚本。 问题是,这意味着一个程序只是分成两个文件,现在必须保持同步,一起转移到新机器上等等。
我目前最不喜欢的选项是将Rembedded到bash脚本中:
 #!/bin/bash ... # usage message to catch bad input without invoking R ... # any bash pre-processing of input ... # etc R --random-flags <<RSCRIPT # R code goes here RSCRIPT 
一切都在一个单一的文件。 它是可执行的,可以轻松处理参数。 问题在于,将bash和R结合起来,几乎消除了任何一个IDE都不能失败的可能性,并且使我的心脏受到伤害。
有没有更好的方法我错过了?
  script.r内容: 
 #!/usr/bin/Rscript cat("Hello") 
从命令行调用:
 ./script.r 
 试试小费 。  littler为GNU R提供了hash-bang(即以#!/ some / path开头的脚本)function,以及简单的命令行和pipe道使用。 
  #!/path/to/R将不起作用,因为R本身就是一个脚本,所以execve不高兴。 
 我使用R --slave -f script 
米格尔·桑切斯的回应是应该的。 执行Rscript的另一种方式可以是运行系统范围RScript的'env'命令。
 #!/usr/bin/env Rscript 
如果您有兴趣将命令行参数parsing为R脚本,请尝试从版本2.5.x起与R捆绑在一起的RScript
http://stat.ethz.ch/R-manual/R-patched/library/utils/html/Rscript.html
这工作,
 #!/usr/bin/Rscript 
但是我不知道如果你的机器上安装了超过1个版本的R,会发生什么情况。
如果你这样做
 #!/usr/bin/env Rscript 
它告诉解释者只要使用R先出现在你的path上。
 只是一个笔记添加到这个职位。  R后期版本似乎已经埋葬了Rscript 。 对于2015年1月下载的OSX上的R Rscript ,我发现了Rscript 
 /sw/Library/Frameworks/R.framework/Versions/3.1/Resources/bin/Rscript 
 所以,而不是像#! /sw/bin/Rscript  #! /sw/bin/Rscript ,我需要在脚本的顶部使用以下内容。 
 #! /sw/Library/Frameworks/R.framework/Versions/3.1/Resources/bin/Rscript 
  locate Rscript可能对您有所帮助。 
如果你用来执行脚本的程序需要参数,你可以把它们放在#!的末尾。 线:
 #!/usr/bin/R --random --switches --f 
不知道R,我无法正确testing,但这似乎工作:
 axa@artemis:~$ cat r.test #!/usr/bin/R -q -f error axa@artemis:~$ ./r.test > #!/usr/bin/R -q -f > error Error: object "error" not found Execution halted axa@artemis:~$ 
你可能想使用python的rpy2模块。 然而,“RIM CMD BATCH”的“正确”方式就是这样。 你可以修改这个来写入STDOUT,但是默认是写入一个.Rout文件。 看下面的例子:
 [ramanujan:~]$cat foo.R print(rnorm(10)) [ramanujan:~]$R CMD BATCH foo.R [ramanujan:~]$cat foo.Rout R version 2.7.2 (2008-08-25) Copyright (C) 2008 The R Foundation for Statistical Computing ISBN 3-900051-07-0 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. [Previously saved workspace restored] ~/.Rprofile loaded. Welcome at Fri Apr 17 13:33:17 2009 > print(rnorm(10)) [1] 1.5891276 1.1219071 -0.6110963 0.1579430 -0.3104579 1.0072677 -0.1303165 0.6998849 1.9918643 -1.2390156 > Goodbye at Fri Apr 17 13:33:17 2009 > proc.time() user system elapsed 0.614 0.050 0.721 
注意:你会想尝试 – 和其他选项来删除所有的启动cruft。
尝试smallR在命令行中编写快速R脚本:
http://code.google.com/p/simple-r/
  (目录中的r命令) 
使用smallR从命令行绘制如下所示:
 r -p file.txt 
下面的代码在Windows上使用MSYS bash – 我的Linux上没有R,所以不能在这里试试。 您需要两个文件 – 第一个称为runr的文件参数执行R.
 # this is runr # following is path to R on my Windows machine # plus any R params you need c:/r/bin/r --file=$1 
你需要使用chmod + x runr来创build这个可执行文件。
然后在你的脚本文件中:
 #!runr # some R commands x = 1 x 
注意#! runr行可能需要包含runr的完整path,具体取决于你如何使用命令,你的PATHvariables是如何设置的等等
不漂亮,但它似乎工作!
你知道你可以使用你的浏览器在服务器上使用RStudio吗?