Rolling window with overlapping observations:

`slide()`

always returns a list.

`slide_lgl()`

, `slide_int()`

, `slide_dbl()`

, `slide_chr()`

use the same
arguments as `slide()`

, but return vectors of the corresponding type.

`slide_dfr()`

& `slide_dfc()`

return data frames using row-binding & column-binding.

slide(.x, .f, ..., .size = 1, .fill = NA, .partial = FALSE,
.align = "right", .bind = FALSE)
slide_dfr(.x, .f, ..., .size = 1, .fill = NA, .partial = FALSE,
.align = "right", .bind = FALSE, .id = NULL)
slide_dfc(.x, .f, ..., .size = 1, .fill = NA, .partial = FALSE,
.align = "right", .bind = FALSE)

## Arguments

.x |
An object to slide over. |

.f |
A function, formula, or atomic vector.
If a **function**, it is used as is.
If a **formula**, e.g. `~ .x + 2` , it is converted to a function. There
are three ways to refer to the arguments:
For a single argument function, use `.`
For a two argument function, use `.x` and `.y`
For more arguments, use `..1` , `..2` , `..3` etc
This syntax allows you to create very compact anonymous functions.
If **character vector**, **numeric vector**, or **list**, it
is converted to an extractor function. Character vectors index by name
and numeric vectors index by position; use a list to index by position
and name at different levels. Within a list, wrap strings in `get-attr()`
to extract named attributes. If a component is not present, the value of
`.default` will be returned. |

... |
Additional arguments passed on to `.f` . |

.size |
An integer for window size. If positive, moving forward from left
to right; if negative, moving backward (from right to left). |

.fill |
A value to fill at the left of the data range (`NA` by default).
`NULL` means no filling. |

.partial |
if `TRUE` , partial sliding. |

.align |
Align index at the "**r**ight", "**c**entre"/"center", or "**l**eft"
of the window. If `.size` is even for center alignment, "centre-right" & "centre-left"
is needed. |

.bind |
If `.x` is a list, should `.x` be combined before applying `.f` ?
If `.x` is a list of data frames, row binding is carried out. |

.id |
If not `NULL` a variable with this name will be created
giving either the name or the index of the data frame. |

## Details

The `slide()`

function attempts to tackle more general problems using
the purrr-like syntax. For some specialist functions like `mean`

and `sum`

,
you may like to check out for **RcppRoll** for faster performance.

`slide()`

is intended to work with list (and column-wise data frame). To
perform row-wise sliding window on data frame, please check out `pslide()`

.

`.partial = TRUE`

allows for partial sliding. Window contains observations
outside of the vector will be treated as value of `.fill`

, which will be passed to `.f`

.

`.partial = FALSE`

restricts calculations to be done on complete sliding windows.
Window contains observations outside of the vector will return the value `.fill`

.

## See also

future_slide for parallel processing

tile for tiling window without overlapping observations

stretch for expanding more observations

Other sliding window functions: `slide2`

## Examples

#> [1] NA 1.5 2.5 3.5 4.5

slide_dbl(x, mean, .size = 2, align = "center")

#> [1] NA 1.5 2.5 3.5 4.5

#> [1] NA FALSE TRUE TRUE TRUE

slide(lst, ~ ., .size = 2)

#> [[1]]
#> [1] NA
#>
#> [[2]]
#> [[2]]$x
#> [1] 1 2 3 4 5
#>
#> [[2]]$y
#> [1] 6 7 8 9 10
#>
#>
#> [[3]]
#> [[3]]$y
#> [1] 6 7 8 9 10
#>
#> [[3]]$z
#> [1] 11 12 13 14 15
#>
#>