Rsript xx.R arg1 arg2 arg3 arg4 arg5
运行脚本。这种方法只能设置位置参数,各参数位置固定,不能写乱,所以如果参数简单且数量少,可以用此种方法。Args <- commandArgs(T)
即可,然后直接Rscript xx.R a1 a2
运行脚本,参数a1,a2的值会存储在Args中,脚本中使用Args[[1]], Args[[2]]
获取它们即可。# 示例脚本(当阐述格式为5个或者2个时成功运行脚本,否则报错并提示错误信息)
# 当想要设置五个参数时使用下列代码:
Args <- commandArgs(T)
# --------------------------------如果简单应用,可以直接掠过下面代码,不需要使用,只要上面一句即可。
if ( length(Args) %in% c(0,1,3,4,6:100)) {
# 即:当参数为个数为0,1,3,4,6:100时报错,并提示以下帮助信息
stop({
cat("Error: Argu error\n Please use args correctly\nHelp:\n Rscrpit this.R [outdir] [method] [pvalue] [fdr] [log2fc] \n")
cat(" --------------------------------------------------------\n")
cat(" 需要设置[outdir] [method] 2个或者全部5个参数, 注:各参数位置不能错!\n")
cat(" [outdir] : 输出结果文件夹, 如果文件夹下原本有内容会覆盖文件\n")
cat(" [method] : 差异分析方法, 取值为0, 1, 2, 3, 4。如为芯片数据, 只能设置为4\n")
cat(" 0: 全部方法(默认) 1: edgeR; 2: Deseq2 3: Limma.voom 4: Limma\n")
cat(" [pvale] [fdr] [log2fc] : 差异分析阈值, 默认为p=0.05, fdr=0.1, log2fc=1\n")
})
} else if (length(Args) == 2) {
# 允许参数个数为2个,当阐述个数为2个时,后面三项参数使用以下默认值
p = 0.05
fdr = 0.1
log2fc = 1
}
cat("Hello, World!", Args[[1]], Args[[2]], p)
cat("Hello, World!", Args[[1]], Args[[2]], Args[[3]], Args[[4]], Args[[5]])
Rscript xx.R arg1 arg2 arg3 arg4 arg5
。通过加载optparse包进行参数设置,这种方法类似与python中argparse方法设置参数,如果不是简单的一两个参数推荐这种方法调用参数。
library(optparse) # 需要用户自己事先安装
option_list <- list(
# -n 为短参数 --name为参数调用时的名称,type:数据类型, action默认store就行,其他顾名思义。
make_option(c("-n", "--name"), type = "character", default = NULL,
action = "store", help = "项目名称,必须设置,最好简短且有意义"
),
make_option(c("-t", "--thread"), type = "integer", default = 4,
action = "store", help = "多线程, 默认为4, 请根据自己计算机资源设置"
),
make_option(c("-m", "--method"), type = "integer", default = 2,
action = "store",
help = "差异分析方法, 取值为1, 2(默认), 1:egdeR, 2:额外进行DESeq2 + Limma-voom"
),
make_option(c("-p", "--pvalue"), type = "numeric", default = 0.05,
action = "store", help = "差异基因筛选阈值p, 默认0.05"
),
make_option(c("-q", "--fdr"), type = "numeric", default = NULL,
action = "store", help = "差异基因筛选阈值fdr, 默认NULL"
),
make_option("--fc", type = "numeric", default = 2,
action = "store", help = "差异基因筛选阈值foldchange, 默认2,即为logfc=1"
)
)
# 解析参数
opt = parse_args(OptionParser(option_list = option_list,
usage = "此脚本为RNAseq差异分析流程!",
description = "格式: Rscript %prog [options]\n将清洗好的eset及group文件放在脚本运行目录下的data文件夹中"))
if( is.null(opt$name) ) { stop({
cat("Error:\nthe argu -n[--name] must be set!\nPlease use Rscript xx.R -h to get help info\n")
}) }
Rscript xx.R -n yyds -t 8 -m 1 -p 0.05 -q 0.1 --fc 4
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。