从命令行运行R脚本

我有一个名为ar的文件,它有一个755的chmod

 sayHello <- function(){ print('hello') } sayHello() 

我怎样才能通过命令行来运行?

如果你想输出到terminal打印,最好使用Rscript

 Rscript aR 

请注意,当使用R CMD BATCH aR而不是将输出redirect到标准输出并在terminal上显示时,会创build一个名为a.Rout的新文件。

 R CMD BATCH aR # Check the output cat a.Rout 

如果你真的想使用调用脚本的./aR方式,你可以添加一个合适的#! 到脚本的顶部

 #!/usr/bin/env Rscript sayHello <- function(){ print('hello') } sayHello() 

我还会注意到,如果你在* unix系统上运行,那么有一个有用的littler包,它提供了简单的命令行pipe道。

这不直接回答这个问题。 但是有人可能会因为他/她想要从terminal运行一个R的oneliner而最终在这里。 例如,如果你只是想安装一些丢失的软件包并退出,这个oneliner可以非常方便。 当我突然发现我错过了一些软件包,并且想将它们安装到我想要的位置时,我使用了它。

 R -e 'install.packages(c("package1", "package2"))' # install to default location. sudo R -e 'install.packages(c("package1", "package2"), lib="/usr/local/lib/R/site-library")' # install to location that requires root. 

从命令行运行R脚本的另一种方法是:

 R < scriptName.R --no-save 

或 – 保存

在这里find

相同的StackOverflow问题

您需要使用?Rscript命令从terminal运行R脚本。

查看http://stat.ethz.ch/R-manual/R-devel/library/utils/html/Rscript.html

 ## example #! script for a Unix-alike #! /path/to/Rscript --vanilla --default-packages=utils args <- commandArgs(TRUE) res <- try(install.packages(args)) if(inherits(res, "try-error")) q(status=1) else q() 

如何使用knitr和rmarkdown通过多个命令在命令中运行Rmd,然后将HTMLfile upload到RPub

这里是一个例子:加载两个库并运行一个R命令

 R -e 'library("rmarkdown");library("knitr");rmarkdown::render("NormalDevconJuly.Rmd")' R -e 'library("markdown");rpubsUpload("normalDev","NormalDevconJuly.html")' 

另一种使用Rscript for * Unix系统的方法是进程替代 。

 Rscript <(zcat ar) # [1] "hello" 

这与被接受的答案显然是一样的,但是这允许你操作和运行你的文件而不用保存命令行的权力,例如:

 Rscript <(sed s/hello/bye/ ar) # [1] "bye" 

Rscript -e "Rcode"类似,它也允许在不保存到文件的情况下运行。 所以它可以和生成R代码的脚本一起使用,例如:

 Rscript <(echo "head(iris,2)") # Sepal.Length Sepal.Width Petal.Length Petal.Width Species # 1 5.1 3.5 1.4 0.2 setosa # 2 4.9 3.0 1.4 0.2 setosa