2011-08-18 20 views
3

这是一个长镜头,但有没有一种方法可以为字母顺序不连续的参数名称指定缩写?部分匹配不适用于某些非常长的描述性名称。非连续字体的参数缩写(部分匹配++)?

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

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

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

回答

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) 
    } 

}