Run R script from command line
我有一个文件,叫做
1 2 3 4 5 | sayHello <- function(){ print('hello') } sayHello() |
如何通过命令行运行这个?
如果要将输出打印到终端,最好使用rscript
1 | Rscript a.R |
注意,当使用
1 2 3 | R CMD BATCH a.R # Check the output cat a.Rout |
关于使用rscript,还有一点需要注意,默认情况下它不会加载
如果您真的想使用
1 2 3 4 5 6 | #!/usr/bin/env Rscript sayHello <- function(){ print('hello') } sayHello() |
我还将注意到,如果您在一个*Unix系统上运行,那么有一个有用的Littler包,它为R提供了简单的命令行管道。
这并不能直接回答问题。但有人可能会在这里结束,因为他们想从终端运行一行r。例如,如果您只想安装一些丢失的包并退出,那么这个OneLiner非常方便。我经常使用它,当我突然发现我错过了一些包,我想安装到我想要的地方。
1 2 | 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脚本的另一种方法是:
1 | R < scriptName.R --no-save |
或与
另请参见在命令行(终端)上使用R脚本的最佳方法是什么?.
您需要
查看http://stat.ethz.ch/r-manual/r-devel/library/utils/html/rscript.html
例子
1 2 3 4 5 6 | ## 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,然后将HTML文件上载到rpubs
下面是一个示例:加载两个库并运行r命令
1 2 3 | R -e 'library("rmarkdown");library("knitr");rmarkdown::render("NormalDevconJuly.Rmd")' R -e 'library("markdown");rpubsUpload("normalDev","NormalDevconJuly.html")' |
只是为了文件。有些时候,你需要以
1 | sudo Rscript path/to/your/file.R |
对*Unix系统使用rscript的另一种方法是进程替换。
1 2 | Rscript <(zcat a.r) # [1]"hello" |
这显然与接受的答案相同,但这允许您在不保存命令行的电源的情况下操作和运行文件,例如:
1 2 | Rscript <(sed s/hello/bye/ a.r) # [1]"bye" |
与
1 2 3 4 | 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 |