Сокращения аргумента с непоследовательной надписью (частичное соответствие ++)? - PullRequest
3 голосов
/ 18 августа 2011

Это длинный выстрел, но есть ли способ указать сокращения для имен аргументов, которые не являются последовательными в буквенном порядке? Частичное сопоставление не работает для некоторых очень длинных описательных имен.

Примеры: (формат "long name - typical partial match - what I'd like")

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

Это не так уж сложно, и я вижу, как это вызовет больше проблем, чем стоит, но есть некоторые случаи, когда у меня есть соглашение для сокращений в пакете, и странно нарушать их только из-за определенного аргумента. является более описательным (потому что он использует его определенным образом). Таким образом, длинная форма может точно сказать пользователю, как она используется в этой конкретной функции, но в краткой форме люди поймут, что это такое, и я смогу придерживаться соглашения.

1 Ответ

4 голосов
/ 18 августа 2011

Я просто добавлю ответ, который дал вам в чате. Если вы посмотрите, как разработчики ядра 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)
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...