quantile <- function (x, probs = seq(0, 1, 0.25), na.rm = FALSE) 
{
	if (na.rm) 
		x <- x[!is.na(x)]
	else if (any(!is.finite(x))) 
	 stop("Missing values, NaN\'s and Inf\'s not allowed if na.rm=FALSE")
	n <- length(x)
	if (any(probs < 0 | probs > 1)) 
		stop("probs outside [0,1]")
	qs <- if(n > 0) {
		index <- 1 + (n - 1) * probs
		lo <- floor(index)
		hi <- ceiling(index)
		x <- sort(x, partial = unique(c(lo, hi)))
		x[lo] + (x[hi] - x[lo]) * (index - lo)
	} else {#-- n = 0
		rep(as.numeric(NA), length(probs))
	}
	names(qs) <- paste(round(100 * probs), "%", sep = "")
	qs
}
