Compute quantiles
Usage
fast_quantile(x, prob = 0.5, na.rm = FALSE, ...)
fast_median(x, na.rm = FALSE, ...)
fast_mvquantile(x, prob = 0.5, na.rm = FALSE, ...)
fast_mvmedian(x, na.rm = FALSE, ...)Value
fast_quantile and fast_median calculate univariate
quantiles (single-value return); fast_mvquantile and fast_mvmedian
calculate multivariate quantiles (for each column, result lengths equal to
the number of columns).
Examples
fast_quantile(runif(1000), 0.1)
#> [1] 0.09972501
fast_median(1:100)
#> [1] 50.5
x <- matrix(rnorm(100), ncol = 2)
fast_mvquantile(x, 0.2)
#> [1] -0.7926140 -0.7404126
fast_mvmedian(x)
#> [1] -0.14570401 -0.09950553
# Compare speed for vectors (usually 30% faster)
x <- rnorm(10000)
microbenchmark::microbenchmark(
fast_median = fast_median(x),
base_median = median(x),
# bioc_median = Biobase::rowMedians(matrix(x, nrow = 1)),
times = 100, unit = "milliseconds"
)
#> Unit: milliseconds
#> expr min lq mean median uq max neval
#> fast_median 0.099398 0.1440545 0.1618899 0.1602135 0.178601 0.465744 100
#> base_median 0.108591 0.1211155 0.1449670 0.1363685 0.162832 0.299085 100
# Multivariate cases
# (5~7x faster than base R)
# (3~5x faster than Biobase rowMedians)
x <- matrix(rnorm(100000), ncol = 20)
microbenchmark::microbenchmark(
fast_median = fast_mvmedian(x),
base_median = apply(x, 2, median),
# bioc_median = Biobase::rowMedians(t(x)),
times = 10, unit = "milliseconds"
)
#> Unit: milliseconds
#> expr min lq mean median uq max neval
#> fast_median 0.779261 0.822094 0.8598986 0.8629805 0.885999 0.979709 10
#> base_median 2.934641 3.017684 3.0906777 3.0256455 3.050023 3.743825 10