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

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

sayHello()

我如何通过命令行运行这个?


当前回答

在Unix系统中使用Rscript的另一种方法是进程替换。

Rscript <(zcat a.r)
# [1] "hello"

这显然与接受的答案是一样的,但这允许你操纵和运行你的文件,而不节省它的命令行功能,例如:

Rscript <(sed s/hello/bye/ a.r)
# [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

其他回答

这并没有直接回答这个问题。但有些人可能会在这里结束,因为他们想从终端运行R的联机程序。例如,如果你只是想安装一些丢失的包并退出,这个联机程序可以非常方便。当我突然发现我错过了一些包,并且我想将它们安装到我想要的地方时,我经常使用它。

安装到默认位置: R -e 'install。包(c(“package1”、“package2)”))” 安装到需要root权限的位置: R -e 'install。packages(c("package1", "package2"), lib="/usr/local/lib/R/site-library")'

如果你想要输出输出到终端,最好使用Rscript

Rscript a.R

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

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

关于使用Rscript需要注意的另一件事是,默认情况下它不会加载方法包,这可能会引起混淆。如果你依赖于方法提供的任何东西你会想要在你的脚本中显式地加载它。

如果你真的想使用。/a。R调用脚本的方式,您可以添加一个适当的#!到脚本的顶部

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

sayHello()

我还会注意到,如果你在*unix系统上运行,有一个有用的littleler包,它提供了简单的命令行管道到R.可能有必要使用littleler通过脚本运行闪亮的应用程序?更多的细节可以在这个问题中找到。

在Unix系统中使用Rscript的另一种方法是进程替换。

Rscript <(zcat a.r)
# [1] "hello"

这显然与接受的答案是一样的,但这允许你操纵和运行你的文件,而不节省它的命令行功能,例如:

Rscript <(sed s/hello/bye/ a.r)
# [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

将代码保存在ABC中。R,文件看起来是这样的:

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

sayHello()

创建另一个名为run的文件。CMD并在那里放置以下一行:

"C:\Install\R\Rscript.exe" "C:\Users\ABC.R"

双击“运行”。它运行你的R代码。

您需要?Rscript命令从终端运行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()