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]")
	index <- 1 + (n - 1) * probs
	lo <- floor(index)
	hi <- ceiling(index)
	x <- sort(x, partial=unique(c(lo,hi)))
	qs <- x[lo] + (x[hi] - x[lo]) * (index - lo)  
	names(qs) <- paste(round(100*probs), "%", sep="")
	qs
}
