# shiftApply-methods: Apply a function over subsequences of 2 vector-like objects In S4Vectors: Foundation of vector-like and list-like containers in Bioconductor

## Description

`shiftApply` loops and applies a function overs subsequences of vector-like objects `X` and `Y`.

## Usage

 `1` ```shiftApply(SHIFT, X, Y, FUN, ..., OFFSET=0L, simplify=TRUE, verbose=FALSE) ```

## Arguments

 `SHIFT` A non-negative integer vector of shift values. `X, Y` The vector-like objects to shift. `FUN` The function, found via `match.fun`, to be applied to each set of shifted vectors. `...` Further arguments for `FUN`. `OFFSET` A non-negative integer offset to maintain throughout the shift operations. `simplify` A logical value specifying whether or not the result should be simplified to a vector or matrix if possible. `verbose` A logical value specifying whether or not to print the `i` indices to track the iterations.

## Details

Let `i` be the indices in `SHIFT`, `X_i = window(X, 1 + OFFSET, length(X) - SHIFT[i])`, and `Y_i = window(Y, 1 + SHIFT[i], length(Y) - OFFSET)`. `shiftApply` calculates the set of `FUN(X_i, Y_i, ...)` values and returns the results in a convenient form.

• The `window` and `aggregate` methods for vector-like objects defined in the S4Vectors package.
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13``` ```set.seed(0) lambda <- c(rep(0.001, 4500), seq(0.001, 10, length = 500), seq(10, 0.001, length = 500)) xRle <- Rle(rpois(1e7, lambda)) yRle <- Rle(rpois(1e7, lambda[c(251:length(lambda), 1:250)])) cor(xRle, yRle) shifts <- seq(235, 265, by=3) corrs <- shiftApply(shifts, yRle, xRle, FUN=cor) cor(xRle, yRle) shiftApply(249:251, yRle, xRle, FUN=function(x, y) var(x, y) / (sd(x) * sd(y))) ```