从命令行运行R脚本

从命令行运行R脚本,r,command-line,R,Command Line,我有一个名为a.r的文件,它的chmod为755 sayHello <- function(){ print('hello') } sayHello() sayHello您需要使用?Rscript命令从终端运行R脚本 退房 范例 ## example #! script for a Unix-alike #! /path/to/Rscript --vanilla --default-packages=utils args <- commandArgs(TRUE) res

我有一个名为
a.r
的文件,它的
chmod
为755

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

sayHello()

sayHello您需要使用
?Rscript
命令从终端运行R脚本

退房

范例

## 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()
###示例#!类似Unix的脚本
#! /path/to/Rscript--vanilla--default packages=utils

args如果要将输出打印到终端,最好使用Rscript

Rscript a.R
请注意,当使用
R CMD BATCH a.R
时,将创建一个名为.Rout的新文件,而不是将输出重定向到标准输出并在终端上显示

R CMD BATCH a.R
# Check the output
cat a.Rout
关于使用Rscript还有一点需要注意,默认情况下它不会加载
方法
包,这可能会导致混淆。因此,如果您依赖于方法提供的任何内容,您将希望在脚本中显式地加载它

如果您确实想使用调用脚本的
/a.R
方式,可以添加适当的
#到脚本的顶部

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

sayHello()
#/usr/bin/env Rscript

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

R < scriptName.R --no-save  
R
或使用
--保存


另请参见。

这并不能直接回答问题。但是有人可能会在这里结束,因为他们想从终端运行一条R航线。例如,如果您只想安装一些丢失的软件包并退出,那么此oneliner非常方便。我经常使用它,当我突然发现我错过了一些软件包,我想把它们安装到我想要的地方

  • 要安装到默认位置,请执行以下操作:

    R -e 'install.packages(c("package1", "package2"))'
    
  • 要安装到需要root权限的位置,请执行以下操作:

    R -e 'install.packages(c("package1", "package2"), lib="/usr/local/lib/R/site-library")' 
    

如何通过多个命令使用knitr和rmarkdown运行Rmd in命令,然后将HTML文件上载到RPubs

下面是一个示例:加载两个库并运行R命令

R -e 'library("rmarkdown");library("knitr");rmarkdown::render("NormalDevconJuly.Rmd")'

R -e 'library("markdown");rpubsUpload("normalDev","NormalDevconJuly.html")'

对于*Unix系统使用Rscript的另一种方法是


仅为了编写文档,有时您需要以
sudo
的方式运行脚本:

sudo Rscript path/to/your/file.R

这只是一个如何编写/运行R脚本的示例,在文件中添加#/path/to/rscript,然后chmod+x和./不带#!命令行尝试将其作为命令行脚本运行,使用与解释命令相同的解释器。它不知道它应该是R,即使文件以.R或.R后缀结尾。这个#!告诉命令行文件中包含什么语言。多年来,我在这里发现了一些问题,并且能够引用littler和Rscript。主要的事情是告诉人们,就像你做的那样,
R CMD BATCH
很糟糕。任何东西,但…@Dason我也在使用R脚本,我试图从Java程序执行R脚本,我看到一些错误。这是我的名片。看看你能不能帮忙。我现在使用hello函数示例来简化它。有没有办法在命令本身中修改库路径?类似于
R CMD INSTALL-l~/R/lib dev
@mikemtnikes的东西我不知道。可以添加一些内容来更改脚本中的.libpath()。但我看不到Rscript手册页中指出的任何选项;dr:只需添加脚本的第一行:
#/usr/bin/env Rscript
要运行命令,还可以在终端中使用
Rscript-e“getwd()”
。Rscript只打印命令输出,不打印完整的R启动消息。如果安装了littler,还可以使用
R-e“cat(getwd(),'\n')”
。在Dirk中,Eddelbuettel解释了littler和Rscript之间的区别。感谢您预见到我的问题!我还需要一件事:
R-e'install.packages(“package”,repos=”http://cran.us.r-project.org“
应该使用
R-R”选项(warn=2);安装…'
以便在安装失败时停止执行并获取非零错误代码。否则,任何
install.packages
错误都只是警告。请注意,跳过加载库会更简单
R-e'markdown::rpubsUpload(“normalDev”,“NormalDevconJuly.html”)”
什么时候需要这样做?使用sudo几乎从来都不是一个好主意,尤其是当你不知道为什么需要它时
Rscript <(sed s/hello/bye/ a.r)
# [1] "bye"
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
sudo Rscript path/to/your/file.R