Предположим, я хочу написать функцию в 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
}
Я склоняюсь к первому, я думаю