R: Fast element counting in non-overlapping bins

binCounts {matrixStats} | R Documentation

## Fast element counting in non-overlapping bins

### Description

Counts the number of elements in non-overlapping bins

### Usage

    binCounts(x, idxs = NULL, bx, right = FALSE, ...)

### Arguments

`x` | A `numeric` `vector` of K positions for to be binned and counted.
`idxs` | A `vector` indicating subset of elements to operate over. If `NULL`, no subsetting is done.
`bx` | A `numeric` `vector` of B + 1 ordered positions specifying the B > 0 bins `[bx[1], bx[2])`, `[bx[2], bx[3])`, ..., `[bx[B], bx[B + 1])`.
`right` | If `TRUE`, the bins are right-closed (left open), otherwise left-closed (right open).
`...` | Not used.

### Details

`binCounts(x, bx, right = TRUE)` gives equivalent results as `rev(binCounts(-x, bx = rev(-bx), right = FALSE))`, but is faster and more memory efficient.

### Value

Returns an `integer` `vector` of length B with non-negative integers.

### Missing and non-finite values

Missing values in `x` are ignored/dropped. Missing values in `bx` are not allowed and gives an error.

### Author(s)

Henrik Bengtsson

### See Also

An alternative for counting occurrences within bins is `hist`, e.g. `hist(x, breaks = bx, plot = FALSE)$counts`. That approach is ~30-60% slower than `binCounts(..., right = TRUE)`.

To count occurrences of indices `x` (positive `integer`s) in `[1, B]`, use `tabulate(x, nbins = B)`, where `x` does not have to be sorted first. For details, see `tabulate`().

To average values within bins, see `binMeans`().

[Package matrixStats version 0.57.0 Index]