这是一个很长的镜头,但是有没有办法为字母顺序不连续的参数名称指定缩写?部分匹配对于一些非常长的描述性名称不起作用。
示例:(格式为“long name
- typical partial match
- what I'd like
”)
,stringsAsFactors
- ,strings
- ,saf
或,asfact
,market_initial
- ,mark
- ,mkt
,rebalanceFunction
- ,rebalance
- ,rebfn
这不是一个大问题,我可以看到它会导致更多的问题而不是它的价值,但是在某些情况下,我有一个跨包的缩写约定,因为一个特定的参数打破它们是很奇怪的更具描述性(因为它以特定的方式使用它)。因此,长形式可以告诉用户它在这个特定函数中的确切使用方式,但是在简短的形式中,人们会理解它的用途是什么,我可以遵守惯例。
答案 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)
}
}