R语言命令行参数传递函数
R
语言命令行参数传递函数
commandArgs()
:R
自带函数,以位置顺序传递参数,使用于简单脚本getopt()
:getopt
包中函数。可以输出帮助文档,好!OptionParser
:optparse
包中函数。也可以输出帮助文档,真香!
详解
commandArgs
1#test.r:待执行的脚本文件
2#文件内容:
3args <- commandArgs(trailingOnly = FALSE)
4cat(args)
5
6#执行
7Rscript test.r a b c
8#return:返回R的路径,脚本的路径等
9#[1] "/path/R"
10#[2] "--slave"
11#[3] "--no-restore"
12#[4] "--file=test.r"
13#[5] "--args"
14#[6] "a"
15#[7] "b"
16#[8] "c"
17
18#test.r
19#args <- commandArgs(T)
20#cat(args)
21
22Rscript test.r a b c
23#return:第一个参数就是a,第二个参数是b,类推
24#[1] "a"
25#[2] "b"
26#[3] "c"
getopt
1getopt(spec = NULL, opt = NULL, command = get_Rscript_filename(), usage = FALSE, debug = FALSE)
2#参数说明
3#spec:一个4列或者5列的矩阵,设置参数的类型
4# 第一列为longflag
5# 第二列为shortflag
6# 第三列为参数的类型,0代表不需要参数,1代表可选参数,2代表必须指定参数
7# 第四列为参数的数据类型,integer、logical、double、character、complex
8# 第五列为注释,可不填写。
9
10#opt:默认从commandArgs接入参数
11#command:命名执行的脚本文件,默认真实名字
12#usage:输出帮助文档
13
14#test.r:待执行的脚本文件
15#文件内容:
16library("getopt")
17
18options<-matrix(c(
19 "help", "h", "0", "logical", "help",
20 "first", "f", "1", "integer", "first argument",
21 "second", "s", "1", "double", "second argument",
22 "third", "t", "2", "character", "third argument"
23), ncol=5, byrow=T)
24
25opt<-getopt(options)
26
27if(is.null(opt$help)
28 cat(getopt(options, usage=T))
29 q()
30}
31
32#执行
33Rscript test.r -f 5 -s 3.14 -t a_b
34#return:
35#$first
36#[1] 5
37#$second
38#[1] 3.14
39#$third
40#[1] "a_b"
41
42#执行
43Rscript test.r -h
44#return:
45#Usage: test.r [-[-help|h]] [-[-first|f] <integer>] [-[-second|s] <double>] [-[-third|t] #[<character>]]
46# -h|--help help
47# -f|--first first argument
48# -s|--second second argument
49# -t|--third third argument
optparse
1#需要安装optparse包
2
3#1.使用make_option函数构建参数列表
4make_option(opt_str, action = "store", type = NULL, dest = NULL,
5default = NULL, help = "", metavar = NULL, callback = NULL,
6callback_args = NULL)
7#参数说明
8#opt_str:参数字符串,"--version"或者c("-v", "--version")
9#action:store代表保存输入的参数值,store_true代表保存"TRUE",store_false代表保存"FALSE"
10#type:参数数据类型
11#dest:参数保存的名字,默认是opt_str中的longflag
12#default:默认值
13#help:帮助文档,使用-h时输出
14
15#2.OptionParser函数解析参数列表
16OptionParser(usage = "usage: %prog [options]", option_list = list(),
17add_help_option = TRUE, prog = NULL, description = "", epilogue = "")
18#参数说明
19#usage:使用说明,%prog代表prog参数的值,默认是脚本名称
20#option_list:参数列表
21#add_help_option:是否使用-h输出帮助文档
22#description:脚本功能描述
23
24#3.parse_args解析命令
25parse_args(object, args = commandArgs(trailingOnly = TRUE),
26print_help_and_exit = TRUE, positional_arguments = FALSE,
27convert_hyphens_to_underscores = FALSE)
28
29########################################################################################
30#test.r:待执行的脚本文件
31#文件内容:
32library("optparse")
33
34option_list <- list(
35 make_option("--version", action="store_true", help="Print script version"),
36 make_option(c("-f", "--first"), action="store", default=1, type="integer", help="first argument [default %default]"),
37 make_option(c("-s", "--second"), default="second argument", type="character", help="second argument [default %default]"),
38 make_option(c("-q", "--quiet"), action="store_false", dest="version", help="dont`t Print output")
39)
40
41opt <- parse_args(OptionParser(
42 usage = "usage: %prog [options]",
43 option_list = option_list,
44 add_help_option = T,
45 description="\nDecription: a script for test"))
46
47#执行
48Rscript test.r -h
49#return:
50#Usage: test.r [options]
51#
52#Decription: a script for test
53#
54#Options:
55# --version
56# Print script version
57#
58# -f FIRST, --first=FIRST
59# first argument [default 1]
60#
61# -s SECOND, --second=SECOND
62# second argument [default second argument]
63#
64# -q, --quiet
65# dont`t Print output
66#
67# -h, --help
68# Show this help message and exit
69
70#执行
71Rscript test.r --version -f 123 -s abc
72#return:
73#$version
74#[1] TRUE
75#
76#$first
77#[1] 123
78#
79#$second
80#[1] "abc"
81#
82#$help
83#[1] FALSE
长按或扫码关注