R语言接受命令行参数的三种方式
最近要用一下R的命令行,但是发现命令行参数不是很友好,就总结了一下目前常用的R的命令行参数的接受方法。
平常我们使用R语言的时候常常都是在交互界面中一步一步更改运行,所以一般用不到命令来执行,但有时候对于批量运行或者某种情况下数据较大,直接在Rstudio中运行卡顿,在把代码提前调试好后后续使用命令行可能更好,另外一半我们编写好的脚本搭建pipeline的时候需要命令行执行,这个时候就必须要命令行来实现了。
R接受命令的参数有三个常见的方法commandArgs()、getopt()、OptionParser(),其中第一个是R自带的函数,后面两个分别来自包getopt和optparse。
运行命令行脚本
在之前了解一下R语言的命令行方式,下面在windows的cmd中还是Mac或者Linux的终端中的命令行用法都是这样的。[options]是R脚本解释器的参数,[args]是脚本的参数。如果是Linux或者Mac的话可以省略Rscipt,在脚本第一行加上shebang行#!/usr/bin/Rscript。
Rscript [options] file [args]
下面是一个R脚本示例test.R
print("Hello R!")
在终端中运行
Rscript test.R
成功输出
[1] "Hello R!"
1. commandArgs()
这是个R的内置命令,和perl的@ARGV或者和python的sys.argv类似,就是将来自于命令的参数存入向量(数组)中。但是与perl和python的不同,它的前面几个元素不是命令行的参数,先尝试打印一下这个参数是怎样的。
下面是一个测试脚本test.R
# commandArgs()就返回一个包含参数信息的向量
args
print(args)
开始测试
Rscript test_args.R Hello R
输出为
[1] "C:\\PROGRA~1\\R\\R-35~1.2\\bin\\x64\\Rterm.exe"
[2] "--slave"
[3] "--no-restore"
[4] "--file=test_args.R"
[5] "--args"
[6] "Hello"
[7] "R"
参数解释:
位置
说明
示例
1
R所在的路径
C:\PROGRA1\R\R-351.2\bin\x64\Rterm.exe
2
Rscript的参数
--slave
3
Rscript的参数
--no-restore
4
运行R脚本的路径
--file=test_args.R
5
脚本参数flag