Steph Locke explains some tricky behavior with window functions in R:

So looking at the code I wrote, you may have expected

`c2`

to hold`NA, 3, 5, ...`

where it’s taking the current value and the prior value to make a window of width 2. Another reasonable alternative is that you may have expected`c2`

to hold`NA, NA, 3, ...`

where it’s summing up the prior two values. But hey, it’s kinda working like`cumsum()`

right so that’s ok! But wait, check out`c3`

. I gave`c3`

a window of width 3 and it gave me`NA, 6, 9, ...`

which looks like it’s summing the prior value, the current value, and the next value. …. That’s weird right?It turns out the default behaviour for these rolling calculations is to

center alignthe window, which means the window sits over the current value and tries it’s best to fit over the prior and next values equally. In the case of us giving it an even number it decided to put the window over the next values more than the prior values.

Knowing your window is critical when using a window function, and knowing that some functions have different default windows than others helps you be prepared.

Kevin Feasel

2018-03-09

R