Каковы рекомендуемые практики для полиморфизма функций в R?

Предположим, я хочу написать функцию в R , которая является функцией пары достаточных статистика по некоторым данным. Например, предположим, что функция foo.func зависит только от выборочного среднего для выборки данных. Я думаю, что для удобства пользователи могут передать в foo.func выборку случайных величин (в этом случае foo.func вычисляет выборочное среднее), или ] образец означает само себя, и это все, что нужно foo.func . Из соображений эффективности последний предпочтительнее, если вызывается несколько функций, таких как foo.func , которые могут принимать выборочное среднее. В этом случае среднее значение необходимо вычислять только один раз (в реальной задаче, которая у меня есть, рассматриваемая статистика выборки может потребовать больших вычислительных ресурсов).

Подводя итог, я хотел бы написать foo.func , чтобы он был доступен новичку (передать данные, пусть функция вычислит достаточную статистику), а также эксперту (предварительно вычислить достаточную статистику для эффективности и передать их).Какие для этого рекомендуются практики? Передан ли мне логический флаг? Множественные аргументы? Вот несколько способов сделать это:

#optional arguments
foo.func <- function(xdata, suff.stats=NULL) {
  if (is.null(suff.stats)) {
    suff.stats <- compute.suff.stats(x)
  }
  #now operate on suff.stats
}

или

#flag input
foo.func <- function(data.or.stat, gave.data=TRUE) {
  if (gave.data) {
    data.or.stat <- compute.suff.stats(data.or.stat)
  }
  #now operate on data.or.stat
}

Я склоняюсь к первому, я думаю

10
задан shabbychef 28 October 2011 в 17:39
поделиться