R
语言命令行参数传递函数
-
commandArgs()
:R
自带函数,以位置顺序传递参数,使用于简单脚本 -
getopt()
:getopt
包中函数。可以输出帮助文档,好! -
OptionParser
:optparse
包中函数。也可以输出帮助文档,真香!
gzh:BBio
详解
commandArgs
#test.r:待执行的脚本文件
#文件内容:
args <- commandArgs(trailingOnly = FALSE)
cat(args)
#执行
Rscript test.r a b c
#return:返回R的路径,脚本的路径等
#[1] "/path/R"
#[2] "--slave"
#[3] "--no-restore"
#[4] "--file=test.r"
#[5] "--args"
#[6] "a"
#[7] "b"
#[8] "c"
#test.r
#args <- commandArgs(T)
#cat(args)
Rscript test.r a b c
#return:第一个参数就是a,第二个参数是b,类推
#[1] "a"
#[2] "b"
#[3] "c"
getopt
getopt(spec = NULL, opt = NULL, command = get_Rscript_filename(), usage = FALSE, debug = FALSE)
#参数说明
#spec:一个4列或者5列的矩阵,设置参数的类型
# 第一列为longflag
# 第二列为shortflag
# 第三列为参数的类型,0代表不需要参数,1代表可选参数,2代表必须指定参数
# 第四列为参数的数据类型,integer、logical、double、character、complex
# 第五列为注释,可不填写。
#opt:默认从commandArgs接入参数
#command:命名执行的脚本文件,默认真实名字
#usage:输出帮助文档
#test.r:待执行的脚本文件
#文件内容:
library("getopt")
options<-matrix(c(
"help", "h", "0", "logical", "help",
"first", "f", "1", "integer", "first argument",
"second", "s", "1", "double", "second argument",
"third", "t", "2", "character", "third argument"
), ncol=5, byrow=T)
opt<-getopt(options)
if(is.null(opt$help)
cat(getopt(options, usage=T))
q()
}
#执行
Rscript test.r -f 5 -s 3.14 -t a_b
#return:
#$first
#[1] 5
#$second
#[1] 3.14
#$third
#[1] "a_b"
#执行
Rscript test.r -h
#return:
#Usage: test.r [-[-help|h]] [-[-first|f] <integer>] [-[-second|s] <double>] [-[-third|t] #[<character>]]
# -h|--help help
# -f|--first first argument
# -s|--second second argument
# -t|--third third argument
optparse
#需要安装optparse包
#1.使用make_option函数构建参数列表
make_option(opt_str, action = "store", type = NULL, dest = NULL,
default = NULL, help = "", metavar = NULL, callback = NULL,
callback_args = NULL)
#参数说明
#opt_str:参数字符串,"--version"或者c("-v", "--version")
#action:store代表保存输入的参数值,store_true代表保存"TRUE",store_false代表保存"FALSE"
#type:参数数据类型
#dest:参数保存的名字,默认是opt_str中的longflag
#default:默认值
#help:帮助文档,使用-h时输出
#2.OptionParser函数解析参数列表
OptionParser(usage = "usage: %prog [options]", option_list = list(),
add_help_option = TRUE, prog = NULL, description = "", epilogue = "")
#参数说明
#usage:使用说明,%prog代表prog参数的值,默认是脚本名称
#option_list:参数列表
#add_help_option:是否使用-h输出帮助文档
#description:脚本功能描述
#3.parse_args解析命令
parse_args(object, args = commandArgs(trailingOnly = TRUE),
print_help_and_exit = TRUE, positional_arguments = FALSE,
convert_hyphens_to_underscores = FALSE)
########################################################################################
#test.r:待执行的脚本文件
#文件内容:
library("optparse")
option_list <- list(
make_option("--version", action="store_true", help="Print script version"),
make_option(c("-f", "--first"), action="store", default=1, type="integer", help="first argument [default %default]"),
make_option(c("-s", "--second"), default="second argument", type="character", help="second argument [default %default]"),
make_option(c("-q", "--quiet"), action="store_false", dest="version", help="dont`t Print output")
)
opt <- parse_args(OptionParser(
usage = "usage: %prog [options]",
option_list = option_list,
add_help_option = T,
description="\nDecription: a script for test"))
#执行
Rscript test.r -h
#return:
#Usage: test.r [options]
#
#Decription: a script for test
#
#Options:
# --version
# Print script version
#
# -f FIRST, --first=FIRST
# first argument [default 1]
#
# -s SECOND, --second=SECOND
# second argument [default second argument]
#
# -q, --quiet
# dont`t Print output
#
# -h, --help
# Show this help message and exit
#执行
Rscript test.r --version -f 123 -s abc
#return:
#$version
#[1] TRUE
#
#$first
#[1] 123
#
#$second
#[1] "abc"
#
#$help
#[1] FALSE
网友评论