R語言如何最簡單的寫腳本並添加幫助文檔

  • 2019 年 12 月 5 日
  • 筆記

1. 默認的參數commandArgs超簡單

1.1 腳本示例

head.R

 1args = commandArgs(TRUE)   2   3if(length(args) != 2){   4    cat("運行命令方式:Rscript head.R dat.csv 5nthead.R 為腳本ntdat.csv 為數據nt5 為行數n")   5    quit("no")   6}else{   7    dd = read.csv(args[1])   8    n = as.numeric(args[2])   9    head(dd,n)  10}

1.2 腳本解釋

  • 首先將commandArgs為TRUE,並賦值給args,這樣args[1]是第一個參數,args[2]為第二個參數,以此類推
  • 使用length(args)計算參數長度,並使用if判斷長度是否為2,參數個數為2,執行else,否則報錯
  • 報錯這一步中,用cat列印幫助文檔,然後quit("no")程式
  • 如果執行程式,直接列印到螢幕上

1.3 腳本測試

執行:無參數,直接給出幫助文檔

1(base) [dengfei@ny01 a]$ Rscript head.R  2運行命令方式:Rscript head.R dat.csv 5  3    head.R 為腳本  4    dat.csv 為數據  5    5 為行數

執行:參數個數不符合要求,直接給出幫助文檔

1(base) [dengfei@ny01 a]$ Rscript head.R npk.csv  2運行命令方式:Rscript head.R dat.csv 5  3    head.R 為腳本  4    dat.csv 為數據  5    5 為行數

執行:參數正確,直接執行

1(base) [dengfei@ny01 a]$ Rscript head.R npk.csv 4  2  block N P K yield  31     1 0 1 1  49.5  42     1 1 1 0  62.8  53     1 0 0 0  46.8  64     1 1 0 1  57.0

2. 如果想正式使用`optparse`包

2.1 腳本示例

head2.R

 1library(optparse)   2   3option_list <- list(   4  make_option(c("-d", "--dat"), type = "character", default=FALSE,   5              help="請輸入數據文件"),   6  make_option(c("-r", "--row"), type="integer", default=FALSE,   7              help="請輸入行數")   8)   9  10opt_parser = OptionParser(option_list=option_list);  11opt = parse_args(opt_parser);  12file = opt$dat  13r = opt$row  14  15dd = read.csv(file)  16head(dd,r)

2.2 腳本解釋

  • 首先載入optparse包
  • 使用list編寫說明文檔和關鍵詞
  • 使用parse_args解析參數,編程類似args的格式
  • 調用

2.3 腳本測試

執行:–help,直接給出幫助文檔

 1(base) [dengfei@ny01 a]$ Rscript head2.R --help   2Usage: head2.R [options]   3   4   5Options:   6    -d DAT, --dat=DAT   7        請輸入數據文件   8   9    -r ROW, --row=ROW  10        請輸入行數  11  12    -h, --help  13        Show this help message and exit

也可以使用簡寫的-h形式列印幫助文檔

 1(base) [dengfei@ny01 a]$ Rscript head2.R -h   2Usage: head2.R [options]   3   4   5Options:   6    -d DAT, --dat=DAT   7        請輸入數據文件   8   9    -r ROW, --row=ROW  10        請輸入行數  11  12    -h, --help  13        Show this help message and exit

執行:參數正確,直接執行

  • 第一個參數:-d npk.csv
  • 第二個參數:-r 4
1Rscript head2.R -d npk.csv -r 4
1(base) [dengfei@ny01 a]$ Rscript head2.R -d npk.csv -r 4  2  block N P K yield  31     1 0 1 1  49.5  42     1 1 1 0  62.8  53     1 0 0 0  46.8  64     1 1 0 1  57.0