带有非连续字母的参数缩写(部分匹配++)?

时间:2011-08-18 07:55:33

标签: r

这是一个很长的镜头,但是有没有办法为字母顺序不连续的参数名称指定缩写?部分匹配对于一些非常长的描述性名称不起作用。

示例:(格式为“long name - typical partial match - what I'd like”)

  • ,stringsAsFactors - ,strings - ,saf,asfact
  • ,market_initial - ,mark - ,mkt
  • ,rebalanceFunction - ,rebalance - ,rebfn

这不是一个大问题,我可以看到它会导致更多的问题而不是它的价值,但是在某些情况下,我有一个跨包的缩写约定,因为一个特定的参数打破它们是很奇怪的更具描述性(因为它以特定的方式使用它)。因此,长形式可以告诉用户它在这个特定函数中的确切使用方式,但是在简短的形式中,人们会理解它的用途是什么,我可以遵守惯例。

1 个答案:

答案 0 :(得分:4)

我只想在聊天中添加我给你的答案。如果您看一下R核心开发人员如何为不同的参数执行此操作,您只需使用函数声明即可。来自read.table,其中包含参数as.is和参数stringsAsFactors,它们完全相同(或实际上相反):

function (file, -some pars-, as.is = !stringsAsFactors, -some more pars -
    stringsAsFactors = default.stringsAsFactors(), -more pars - ) 
{
    #function code using as.is 
}

事情是,这只有在为其中任何一个指定默认值时才有效。通常,NULL是一个很好的候选者:

myfunc <- function(x, market_initial=NULL, mkt = market_initial, ...){

    if(is.null(mkt)) { 
        print("give me market_initial!") # instead of missing(mkt)
    } else {
        print(mkt)
    }

}