美文网首页
R语言 -- 【optparse 包】如何给R脚本设置命令行参数

R语言 -- 【optparse 包】如何给R脚本设置命令行参数

作者: 生信摆渡 | 来源:发表于2020-05-14 13:51 被阅读0次

    optparse使得我们很方便地给R脚本设置命令行参数,从而使得R脚本的复用和流程化使用。

    1 安装

    install.packages("optparse")
    library("optparse")
    

    2 使用

    创建参数列表:make_option
    # Usage
    make_option(
      opt_str, # 参数名,格式:--parameter_name
      action = NULL, # 描述optparse在遇到选项“store”、“store-true”、“store-false”或“callback”时应采取的操作的字符串。如果在命令字符串上找到选项,则“store”操作表示optparse应存储指定的以下值。如果找到选项,“store_true”将存储true,如果找到选项,“store_false”将存储false。“callback”存储回调参数中指定的函数生成的返回值。如果callback不为空,则默认值为“callback”else“store”。
      type = NULL, # 参数数据类型
      dest = NULL,
      default = NULL, #设置参数的默认值
      help = "", # 该参数的描述信息
      metavar = NULL,
      callback = NULL,
      callback_args = NULL
    )
    
    option_list = list(make_option(), make_option(), make_option()) 
    
    将参数列表传递给一个变量
    args <- parse_args(OptionParser(option_list=option_list))
    

    这样提取参数的值就非常地方便:args$name

    3 示例

    $ cat test.R 
    # 随便写的
    library("optparse")
    
    option_list = list(make_option("--runFolder", type = "character", default = NULL, help  = "Run Folder."),
                       make_option("--cgGR", type = "character", default = NULL, help = "File path to CpG site R data."),
                       make_option("--Tag", type = "character", default = NULL, help = "Tag"),
                       make_option("--CGI", type = "character", default = NULL, help = "CpG Island BED file"))         
    args <- parse_args(OptionParser(option_list=option_list))
    
    cmd = paste("bibibi --runFolder", args$runFolder, "--cgGR", args$cgGR, "--Tag",  args$Tag, "--CGI", args$CGI)
    cat(cmd, "\n")
    
    $ Rscript test.R --runFolder BS_workflow --cgGR RData/cgGR.RData --Tag 1359380N --CGI CpG/hg19_cpgIsland.bed
    bibibi --runFolder BS_workflow --cgGR RData/cgGR.RData --Tag 1359380N --CGI CpG/hg19_cpgIsland.bed 
    

    在这个例子可能看不到这个包的好处,当你有多个样本要处理时,在pipeline中使用这种参数传递将是一个不错的方法。

    相关文章

      网友评论

          本文标题:R语言 -- 【optparse 包】如何给R脚本设置命令行参数

          本文链接:https://www.haomeiwen.com/subject/nmltohtx.html