##' format a list of range (HPD, CI, etc that has length of 2)
##'
##'
##' @title range_format
##' @param x input list
##' @param trans transformation function
##' @return character vector of '[lower, upper]'
##' @export
##' @author guangchuang yu
range_format <- function(x, trans = NULL) {
    sapply(x, function(y) {
        if(length(y) == 1 && is.na(y)) {
            return(NA)
        } else {
            if (!is.null(trans) && is(trans, 'function'))
                y <- trans(y)
            return(sprintf("[%f, %f]", y[1], y[2]))
        }
    })
}