## Sample Quantiles

## Usage

    quantile(x, probs=seq(0, 1, 0.25), na.rm=FALSE, names = TRUE)

## Description

The generic function `quantile` produces sample quantiles corresponding to the given probabilities. The smallest observation corresponds to a probability of 0 and the largest to a probability of 1.

## Details

A vector of length `length(probs)` is returned; if `names = TRUE`, it has a `names` attribute.

`quantile(x,p)` as a function of `p` linearly interpolates the points ( (i-1)/(n-1), ox[i] ), where `ox <- order(x)` (the ``order statistics'') and `n <- length(x)`.

This gives `quantile(x, p) == (1-f)*ox[i] + f*ox[i+1]`, where `r <- 1 + (n-1)*p`, `i <- floor(r)`, `f <- r - i` and `ox[n+1] := ox[n]`.

## Examples

    quantile(x <- rnorm(1001))# Extremes & Quartiles by default
    quantile(x,  probs=c(.1,.5,1,2,5,10,50)/100)

    n <- length(x) ## the following is exact, because 1/(1001-1) is exact:
    all(abs(sort(x) == quantile(x, probs = ((1:n)-1)/(n-1), names=F)))# TRUE

    n <- 777
    ox <- sort(x <- round(rnorm(n),1))# round() produces ties
    ox <- c(ox, ox[n]) #- such that ox[n+1] := ox[n]
    p <- c(0,1,runif(100))
    i <- floor(r <- 1 + (n-1)*p)
    f <- r - i
    all(abs(quantile(x,p) - ((1-f)*ox[i] + f*ox[i+1])) < 20*.Machine$double.eps)

[Package Contents]