1 commandArgs

类似于Python的sys.argv

  1. # test1.R
  2. commandArgs()

1.1 从stdin读取脚本并运行,通过—args传入参数

image.png

1.2 通过Rscript运行脚本,直接传入参数

image.png

1.3 设置trailingOnly=TRUE, 只保留参数本身

  1. # test1.R
  2. commandArgs(trailingOnly=TRUE) # or commandArgs(T)

image.png

image.png

2 optparse包

类似Python的argparse模块

  1. if (!requireNamespace('optparse', quietly = TRUE)) {
  2. install.packages('optparse')
  3. }
  4. option_list <- list(
  5. make_option(c('-i', '--infile'), dest='infile', default=NULL, help='The input file.'),
  6. make_option(c('-o', '--outfile'), dest='outfile', default=NULL, help='The output file.'),
  7. make_option(c('--height'), dest='height', type='integer', default=1000, help='The height of image[default=%default].'),
  8. make_option(c('--width'), dest='width', type='integer', default=1000, help='The width of image[default=%default].'),
  9. make_option(c('--main'), dest='main', default='', help='The main title of image[default="%default"].')
  10. )
  11. parser <- OptionParser(
  12. option_list=option_list,
  13. usage='Rscript $prog [options]',
  14. description='\tArguments parse test.',
  15. epilogue='\tcontact: suqingdong@novogene.com.')
  16. args <- parse_args(parser)
  17. infile <- args$infile
  18. outfile <- args$outfile
  19. height <- args$height
  20. width <- args$width
  21. main <- args$main

PS:

  • dest: opt$destname, 默认为较长的opt_str
  • metavar: 打印帮助信息时,显示的参数名, 默认为dest的值
  • type either “logical”, “integer”, “double”, “complex”, or “character”
  • %prog, %default可用于变量的引用

另一种使用方式, 更像Python的argparse使用方式

  1. parser <- OptionParser(
  2. usage='Rscript $prog [options]',
  3. description='\tArguments parse test.',
  4. epilogue='\tcontact: suqingdong@novogene.com.'
  5. )
  6. parser <- add_option(parser, c('-i', '--infile'), action='store', default=NULL, help='The input file.')
  7. parser <- add_option(parser, c('-o', '--outfile'), action='store', default='out.png', help='The input file[default %default].')
  8. args <- parse_args(parser)
  9. print(args$i)
  10. print(args$o)

同时使用关键词参数和位置参数 positional_arguments = TRUE

  1. if (!requireNamespace('optparse', quietly = TRUE)) {
  2. install.packages('optparse', repos='https://mirrors.tuna.tsinghua.edu.cn/CRAN/')
  3. }
  4. library(optparse)
  5. parser <- OptionParser(
  6. prog='test',
  7. usage='Rscript %prog [options]',
  8. description='\t\033[32m arguments parse test \033[0m',
  9. epilogue='contact: suqingdong@novogene.com.'
  10. )
  11. add_option(parser, c('-i', '--infile'), action='store', default=NULL, help='The input file.')
  12. add_option(parser, c('-o', '--outfile'), action='store', default='out.png', help='The input file[default %default].')
  13. opt <- parse_args(parser, positional_arguments = TRUE)
  14. print(opt$i)
  15. print(opt$o)
  16. print(opt$args)

3 argparse包

  1. suppressWarnings(library(argparse))
  2. parser = ArgumentParser(description='convert rds to table')
  3. parser$add_argument('-i', '--infile', help='the input rds file', required=T)
  4. parser$add_argument('-o', '--outfile', help='the output table file', required=T)
  5. args = parser$parse_args()