Dear All, 

I wonder whether it is still valid to use the following R code for cut. All I have done is changed:

   if (is.na(breaks) | breaks < 2) 

to:
 
   if (is.na(breaks) | breaks < 1)

so that it covers interval of 1?  

It seems okay for my purposes but I am not sure why R specifically does not allow break<2 to happen.

Steve.





cut.default<-
function (x, breaks, labels = NULL, include.lowest = FALSE, right = TRUE, dig.lab = 3, ...) 
{
    if (!is.numeric(x)) 
        stop("'x' must be numeric")
    if (length(breaks) == 1) {
        if (is.na(breaks) | breaks < 1) 
            stop("invalid number of intervals")
        nb <- as.integer(breaks + 1)
        dx <- diff(rx <- range(x, na.rm = TRUE))
        if (dx == 0) 
            dx <- rx[1]
        breaks <- seq(rx[1] - dx/1000, rx[2] + dx/1000, len = nb)
    }
    else nb <- length(breaks <- sort(breaks))
    if (any(duplicated(breaks))) 
        stop("'breaks' are not unique")
    codes.only <- FALSE
    if (is.null(labels)) {
        for (dig in dig.lab:max(12, dig.lab)) {
            ch.br <- formatC(breaks, digits = dig, wid = 1)
            if (ok <- all(ch.br[-1] != ch.br[-nb])) 
                break
        }
        labels <- if (ok) 
            paste(if (right) 
                "("
            else "[", ch.br[-nb], ",", ch.br[-1], if (right) 
                "]"
            else ")", sep = "")
        else paste("Range", 1:(nb - 1), sep = "_")
        if (ok && include.lowest) {
            if (right) 
                substr(labels[1], 1, 1) <- "["
            else substring(labels[nb - 1], nchar(labels[nb - 
                1], type = "char")) <- "]"
        }
    }
    else if (is.logical(labels) && !labels) 
        codes.only <- TRUE
    else if (length(labels) != nb - 1) 
        stop("labels/breaks length conflict")
    code <- .C("bincode", x = as.double(x), n = as.integer(length(x)), 
        breaks = as.double(breaks), as.integer(nb), code = integer(length(x)), 
        right = as.logical(right), include = as.logical(include.lowest), 
        naok = TRUE, NAOK = TRUE, DUP = FALSE, PACKAGE = "base")$code
    if (codes.only) 
        code
    else factor(code, seq(labels), labels)
}



**************************************************************************************

 Steve Su (s.su@qut.edu.au)    
 Postdoctoral fellow

 Faculty of Business 
 Queensland University of Technology  
 
 Postal Address: Steve Su, School of Accountancy, QUT, PO Box 2434, Brisbane, 
 Queensland, Australia, 4001.   

 CRICOS No. 00213J 
 
 Phone:  +61 7 3864 4357
 Fax:    +61 7 3864 1812      
 Mobile: 0421  840  586  
     .                               
   _--_|\                  
  /      QUT                                   
  \_.--._/                                                                           
        v                                               
                                                                      
**************************************************************************************                                                                   
	[[alternative HTML version deleted]]


