How to use the 'sweep' function
Solution 1:
sweep()
is typically used when you operate a matrix by row or by column, and the other input of the operation is a different value for each row / column. Whether you operate by row or column is defined by MARGIN, as for apply()
. The values used for what I called "the other input" is defined by STATS.
So, for each row (or column), you will take a value from STATS and use in the operation defined by FUN.
For instance, if you want to add 1 to the 1st row, 2 to the 2nd, etc. of the matrix you defined, you will do:
sweep (M, 1, c(1: 4), "+")
I frankly did not understand the definition in the R documentation either, I just learned by looking up examples.
Solution 2:
sweep() can be great for systematically manipulating a large matrix either column by column, or row by row, as shown below:
> print(size)
Weight Waist Height
[1,] 130 26 140
[2,] 110 24 155
[3,] 118 25 142
[4,] 112 25 175
[5,] 128 26 170
> sweep(size, 2, c(10, 20, 30), "+")
Weight Waist Height
[1,] 140 46 170
[2,] 120 44 185
[3,] 128 45 172
[4,] 122 45 205
[5,] 138 46 200
Granted, this example is simple, but changing the STATS and FUN argument, other manipulations are possible.