Когда я смотрю на исходный код пакетов R, я вижу, что функция sweepиспользуется довольно часто. Иногда он используется, когда было бы достаточно более простой функции (например, apply), в других случаях невозможно точно знать, что он делает, не потратив достаточное количество времени на пошаговое выполнение блока кода, в котором оно находится.
Тот факт, что я могу воспроизвести sweepэффект с помощью более простой функции, говорит о том, что я не понимаю sweepосновных вариантов использования, а тот факт, что эта функция используется так часто, предполагает, что она весьма полезна.
Контекст:
sweepэто функция в стандартной библиотеке R; его аргументы:
sweep(x, MARGIN, STATS, FUN="-", check.margin=T, ...)
# x is the data
# STATS refers to the summary statistics which you wish to 'sweep out'
# FUN is the function used to carry out the sweep, "-" is the default
Как вы можете видеть, аргументы аналогичны , applyхотя sweepтребует еще один параметр, STATS.
Еще одно ключевое отличие состоит в том, что sweepвозвращает массив той же формы, что и входной массив, тогда как результат, возвращаемый applyфункцией, зависит от переданной функции.
sweep в действии:
# e.g., use 'sweep' to express a given matrix in terms of distance from
# the respective column mean
# create some data:
M = matrix( 1:12, ncol=3)
# calculate column-wise mean for M
dx = colMeans(M)
# now 'sweep' that summary statistic from M
sweep(M, 2, dx, FUN="-")
[,1] [,2] [,3]
[1,] -1.5 -1.5 -1.5
[2,] -0.5 -0.5 -0.5
[3,] 0.5 0.5 0.5
[4,] 1.5 1.5 1.5
Итак, то, что я ищу, - это один или два примерных варианта использования sweep.
Пожалуйста, не цитируйте и не ссылайтесь на документацию R, списки рассылки или любые «первичные» источники R - предположим, что я их читал. Что меня интересует, так это то, как опытные программисты / аналитики R используют sweepсвой собственный код.