1. 默认的参数commandArgs超简单
1.1 脚本示例
head.R
args = commandArgs(TRUE)
if(length(args) != 2){
cat("运行命令方式:Rscript head.R dat.csv 5\n\thead.R 为脚本\n\tdat.csv 为数据\n\t5 为行数\n")
quit("no")
}else{
dd = read.csv(args[1])
n = as.numeric(args[2])
head(dd,n)
}
1.2 脚本解释
- 首先将
commandArgs
为TRUE,并赋值给args,这样args[1]是第一个参数,args[2]为第二个参数,以此类推 - 使用length(args)计算参数长度,并使用if判断长度是否为2,参数个数为2,执行else,否则报错
- 报错这一步中,用cat打印帮助文档,然后quit(“no”)程序
- 如果执行程序,直接打印到屏幕上
1.3 脚本测试
执行:无参数,直接给出帮助文档
(base) [dengfei@ny01 a]$ Rscript head.R
运行命令方式:Rscript head.R dat.csv 5
head.R 为脚本
dat.csv 为数据
5 为行数
执行:参数个数不符合要求,直接给出帮助文档
(base) [dengfei@ny01 a]$ Rscript head.R npk.csv
运行命令方式:Rscript head.R dat.csv 5
head.R 为脚本
dat.csv 为数据
5 为行数
执行:参数正确,直接执行
(base) [dengfei@ny01 a]$ Rscript head.R npk.csv 4
block N P K yield
1 1 0 1 1 49.5
2 1 1 1 0 62.8
3 1 0 0 0 46.8
4 1 1 0 1 57.0
2. 如果想正式使用optparse
包
2.1 脚本示例
head2.R
library(optparse)
option_list <- list(
make_option(c("-d", "--dat"), type = "character", default=FALSE,
help="请输入数据文件"),
make_option(c("-r", "--row"), type="integer", default=FALSE,
help="请输入行数")
)
opt_parser = OptionParser(option_list=option_list);
opt = parse_args(opt_parser);
file = opt$dat
r = opt$row
dd = read.csv(file)
head(dd,r)
2.2 脚本解释
- 首先载入optparse包
- 使用list编写说明文档和关键词
- 使用parse_args解析参数,编程类似args的格式
- 调用
1.3 脚本测试
执行:–help,直接给出帮助文档
(base) [dengfei@ny01 a]$ Rscript head2.R --help
Usage: head2.R [options]
Options:
-d DAT, --dat=DAT
请输入数据文件
-r ROW, --row=ROW
请输入行数
-h, --help
Show this help message and exit
也可以使用简写的-h形式打印帮助文档
(base) [dengfei@ny01 a]$ Rscript head2.R -h
Usage: head2.R [options]
Options:
-d DAT, --dat=DAT
请输入数据文件
-r ROW, --row=ROW
请输入行数
-h, --help
Show this help message and exit
执行:参数正确,直接执行
- 第一个参数:-d npk.csv
- 第二个参数:-r 4
Rscript head2.R -d npk.csv -r 4
(base) [dengfei@ny01 a]$ Rscript head2.R -d npk.csv -r 4
block N P K yield
1 1 0 1 1 49.5
2 1 1 1 0 62.8
3 1 0 0 0 46.8
4 1 1 0 1 57.0