vlambda博客
学习文章列表

R语言命令行参数传递函数

R语言命令行参数传递函数

  • commandArgs()R自带函数,以位置顺序传递参数,使用于简单脚本

  • getopt()getopt包中函数。可以输出帮助文档,好!

  • OptionParseroptparse包中函数。也可以输出帮助文档,真香!

详解

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



更多内容:


长按或扫码关注