R

Asked • 10/18/19

How to use the 'sweep' function?

When I look at the source of R Packages, i see the function `sweep` used quite often.Sometimes it's used when a simpler function would have sufficed (e.g., `apply`),other times, it's impossible to know exactly what it's is doing withoutspending a fair amount of time to step through the code block it's in.The fact that I can reproduce `sweep`'s effect using a simpler function suggests thati don't understand `sweep`'s core use cases, and the fact that this function is used so often suggests that it's quite useful.The context:`sweep` is a function in R's standard library; its arguments are: 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 defaultAs you can see, the arguments are similar to `apply` though `sweep` requiresone more parameter, `STATS`.Another key difference is that `sweep` returns an array of the *same shape* as the input array, whereas the result returned by `apply` depends on the function passed in.`sweep` in action: # 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.5So in sum, what i'm looking for is an exemplary use case or two for `sweep`.Please, do not recite or link to the R Documentation, mailing lists, or any of the 'primary' R sources--assume I've read them. What I'm interested in is how experienced R programmers/analysts use `sweep` in their own code.

1 Expert Answer

By:

Robert S. answered • 11/22/19

Tutor
5.0 (186)

R Developer and Analyst

Still looking for help? Get the right answer, fast.

Ask a question for free

Get a free answer to a quick problem.
Most questions answered within 4 hours.

OR

Find an Online Tutor Now

Choose an expert and meet online. No packages or subscriptions, pay only for the time you need.