R中的参数传递函数:commandArgs(),getopt().

Posted 一周一paper,一周一技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R中的参数传递函数:commandArgs(),getopt().相关的知识,希望对你有一定的参考价值。

1.commandArgs(),是R自带的参数传递函数,属于位置参数。

##test.R
args=commandArgs(T)
print (args[1])##第一个外部参数
print (args[2])##第二个外部参数
##运行脚本:Rscript test.R first second
结果:

  

2.getopt(),是getopt包的函数,需要先按照getopt包

getopt(spec = NULL, opt = commandArgs(TRUE),command = get_Rscript_filename(), usage = FALSE,debug = FALSE)

spec:一个4-5列的矩阵,里面包括了参数信息,前四列是必须的,第五列可选。

第一列:参数的longname,多个字符。

第二列:参数的shortname,一个字符。

第三列:参数是必须的,还是可选的,数字:0代表不接参数 ;1代表必须有参数;2代表参数可选。

第四列:参数的类型。logical;integer;double;complex;character;numeric

第五列:注释信息,可选。

usage:默认为FALSE,这时参数无实际意义,而是以用法的形式输出。

library(getopt)
spec = matrix(c( \'verbose\', \'v\', 2, "integer", \'help\' , \'h\', 0, "logical", \'count\' , \'c\', 1, "integer", \'mean\' , \'m\', 1, "double", ), byrow=TRUE, ncol=4) opt = getopt(spec) print(opt$count) print(opt$mean)

  

 3.如何制作脚本的帮助:

command=matrix(c("bam","b",1,"character",
                 "bed","d",1,"character",
                 "png","p",1,"character",
                 "help","h",0,"logical"),byrow=T,ncol=4)
args=getopt(command)
if (!is.null(args$help) || is.null(args$bam) || is.null(args$png) || is.null(args$bed)) {
    cat(paste(getopt(command, usage = T), "\\n"))
    q()
}

  

以上是关于R中的参数传递函数:commandArgs(),getopt().的主要内容,如果未能解决你的问题,请参考以下文章

将作为变量名的函数参数传递到 R 函数中的公式中?

如何在R中的sql查询中传递函数参数? [复制]

将变量名称作为参数从外部函数传递到 R 中的内部函数时出现问题?

仅将一些参数作为 R 中的命名列表传递给函数

在 R 用户定义函数中传递数据参数

将字符串传递给 R 函数参数,但稍后用作另一个函数的参数名称