

   SSaammppllee QQuuaannttiilleess

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

   DDeessccrriippttiioonn::

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

   DDeettaaiillss::

        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 interpo-
        lates 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]'.

   EExxaammpplleess::

        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)

