shiftApply-methods {S4Vectors} | R Documentation

## Apply a function over subsequences of 2 vector-like objects

### Description

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

### Usage

    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.

### See Also

- The `window` and `aggregate` methods for vector-like objects defined in the S4Vectors package.

- Vector and Rle objects.

### Examples

    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)))

[Package S4Vectors version 0.20.1 Index]