向 R CMD BATCH 和 Rscript 传递命令行参数
Jesse John
2023年1月30日
-
使用
commandArgs()
函数检索 R 中的参数 -
使用
R CMD BATCH
命令重定向 R 中的输出 - 在 R 中创建脚本并运行命令
-
将命令行参数传递给 R 中的
R CMD BATCH
命令 -
将命令行参数传递给 R 中的
Rscript
当使用命令行运行 R 脚本文件时,我们可能希望传递参数并将输出保存在文件中。本文使用 R CMD BATCH
命令和 Rscript
前端演示了这些技术。
我们将从两种方法共有的一些细节开始。
使用 commandArgs()
函数检索 R 中的参数
应使用 commandArgs()
函数检索在命令行上传递的参数。我们将使用参数 trailingOnly=TRUE
。
该函数返回一个字符向量。
使用 R CMD BATCH
命令重定向 R 中的输出
R CMD BATCH
命令将输出重定向到 .Rout
文件。该文件包含输入命令、结果和错误消息。
使用 Rscript
前端,我们必须使用适当的 shell/终端命令来重定向输出。对于几个终端,它是 > 文件名
。
我们可以在文件开头使用 options(echo=TRUE)
重定向输入。错误消息不会被重定向。
将输出重定向到文件时必须小心。如果文件不存在,则会创建该文件,否则将被覆盖。
在 R 中创建脚本并运行命令
要查看每种方法的工作原理,请执行以下操作。
-
使用给定的 R 代码创建一个文件,并将其以扩展名
.R
保存在目录中以执行 R 命令。 -
在包含脚本文件的目录中打开 shell。
-
将给定的文件名替换为文件名后运行相应的命令。
-
在这些示例脚本中,第一个参数是
hobby
,第二个参数是years
。
将命令行参数传递给 R 中的 R CMD BATCH
命令
语法如下。
R CMD BATCH options "--args userargument1 userargument2" script_filename.R
参数不能包含空格。确切的引用将取决于使用的 shell。
--vanilla
选项结合了几个 R 选项。
R 文件的示例代码:
# Create 5 values in a sequence.
x = seq(from=0, to=20, by=5)
print(x)
# Get the arguments as a character vector.
myargs = commandArgs(trailingOnly=TRUE)
myargs
# The first argument is the text for hobby.
hobby = myargs[1]
hobby
# The second argument is the number of years of practice.
years = as.numeric(myargs[2])
years
命令:
R CMD BATCH --vanilla "--args Golf 8" script_filename.R
在输入文件的同一目录中创建一个与输入文件同名、扩展名为 .Rout
的输出文件。
将命令行参数传递给 R 中的 Rscript
Rscript
是 R 的脚本前端。
参数可能包含空格。这样的参数需要用引号引起来。
语法如下。
Rscript script_filename.R 'user argument 1' userargument2 > rscript_output_file_name.txt
R 文件的示例代码:
# To print the command and its result in the output.
options(echo=TRUE)
# five random values from the standard normal distribution
x = rnorm(5)
print(x)
# Get the arguments as a character vector.
myargs = commandArgs(trailingOnly=TRUE)
myargs
# The first argument is the text for hobby.
hobby = myargs[1]
hobby
# The second argument is the number of years of practice.
years = as.numeric(myargs[2])
years
命令:
Rscript script_filename.R 'Playing Guitar' 3 > rscript_output_file_name.txt
输出文件被创建。它有输入和输出,但没有错误消息。
参考和帮助
请参阅手册的附录 B,调用 R:R 简介。
此外,请参阅 R 的 commandArgs()
函数和 Rscript
工具的文档。
作者: Jesse John