1#' Gets the range of values in each row (column) of a matrix
2#'
3#' Gets the range of values in each row (column) of a matrix.
4#'
5#' @inheritParams rowAlls
6#' @inheritParams rowDiffs
7#'
8#' @return \code{rowRanges()} (\code{colRanges()}) returns a
9#' \code{\link[base]{numeric}} Nx2 (Kx2) \code{\link[base]{matrix}}, where N
10#' (K) is the number of rows (columns) for which the ranges are calculated.
11#'
12#' \code{rowMins()/rowMaxs()} (\code{colMins()/colMaxs()}) returns a
13#' \code{\link[base]{numeric}} \code{\link[base]{vector}} of length N (K).
14#'
15#' @author Henrik Bengtsson
16#'
17#' @seealso \code{\link{rowOrderStats}}() and \code{\link[base]{pmin.int}}().
18#'
19#' @keywords array iteration robust univar
20#'
21#' @export
22rowRanges <- function(x, rows = NULL, cols = NULL, na.rm = FALSE,
23                      dim. = dim(x), ..., useNames = NA) {
24  .Call(C_rowRanges, x, dim., rows, cols, 2L, na.rm, TRUE, useNames)
25}
26
27
28#' @rdname rowRanges
29#' @export
30rowMins <- function(x, rows = NULL, cols = NULL, na.rm = FALSE,
31                    dim. = dim(x), ..., useNames = NA) {
32  .Call(C_rowRanges, x, dim., rows, cols, 0L, na.rm, TRUE, useNames)
33}
34
35
36#' @rdname rowRanges
37#' @export
38rowMaxs <- function(x, rows = NULL, cols = NULL, na.rm = FALSE,
39                    dim. = dim(x), ..., useNames = NA) {
40  .Call(C_rowRanges, x, dim., rows, cols, 1L, na.rm, TRUE, useNames)
41}
42
43
44#' @rdname rowRanges
45#' @export
46colRanges <- function(x, rows = NULL, cols = NULL, na.rm = FALSE,
47                      dim. = dim(x), ..., useNames = NA) {
48  .Call(C_colRanges, x, dim., rows, cols, 2L, na.rm, TRUE, useNames)
49}
50
51
52#' @rdname rowRanges
53#' @export
54colMins <- function(x, rows = NULL, cols = NULL, na.rm = FALSE,
55                    dim. = dim(x), ..., useNames = NA) {
56  .Call(C_colRanges, x, dim., rows, cols, 0L, na.rm, TRUE, useNames)
57}
58
59
60#' @rdname rowRanges
61#' @export
62colMaxs <- function(x, rows = NULL, cols = NULL, na.rm = FALSE,
63                    dim. = dim(x), ..., useNames = NA) {
64  .Call(C_colRanges, x, dim., rows, cols, 1L, na.rm, TRUE, useNames)
65}
66