[R] levels values of cut()

baptiste auguie ba208 at exeter.ac.uk
Sat Aug 9 16:06:05 CEST 2008


Thank you all for the precious tips. For memory I've made the  
following wrapper function for this. I wonder whether a short note on  
these regular expressions could be useful on the help page of cut().


> cutIntervals <- function(x, ...){
> 	dotArgs <- unlist(c(...))
> 	if( any(names(dotArgs) == "labels")) stop("labels cannot be  
> specified,  use cut instead")
> 	
> 	cut.fact <- levels(cut(x,labels=NULL, ...))
> 	# tip from Brian Ripley
> 	lims <- matrix(nrow=length(cut.fact), ncol=2)
> 	lims[,1] <- as.numeric( sub("\\((.+),.*", "\\1", cut.fact) )
> 	lims[,2] <- as.numeric( sub("[^,]*,([^]]*)\\]", "\\1", cut.fact) )
> 	# alternatively (Stephen Tucker)
> 	 # library(gsubfn)
> 	 # lims <- t(strapply(cut.fact,"([0-9.]+),([0-9.]+)",
> 	 # 						function(...) as.numeric(c(...)),backref=-2,simplify=TRUE))
> 	lims
> }
>
> cutIntervals(1:5, 3)


Many thanks,

baptiste

On 9 Aug 2008, at 11:12, Prof Brian Ripley wrote:

> On Sat, 9 Aug 2008, baptiste auguie wrote:
>
>> Dear list,
>>
>> I have the following example, from which I am hoping to retrieve  
>> numeric values of the factor levels (that is, without the brackets):
>>
>>> x <- seq(1, 15, length=100)
>>> y <- sin(x)
>>> my.cuts <- cut(which(abs(y) < 1e-1), 3)
>>> levels(my.cuts)
>>
>> hist() does not suit me for this, as it does not necessarily  
>> respect the number of breaks.
>>
>> getAnywhere hasn't got me very far: I cannot seem to find a  
>> readable code for the built-in cut function in the base library. I  
>> think getMethod should do it but I don't understand the arguments  
>> to pass.
>
> Not getMethod (that's for S4 methods).  Just type cut.default at the  
> R prompt.
>
> However, try
>
> example(cut)
> foo <- levels(cut(aaa, 3))
> lims <- matrix(nrow=length(foo), ncol=2)
> lims[,1] <- as.numeric( sub("\\((.+),.*", "\\1", foo) )
> lims[,2] <- as.numeric( sub("[^,]*,([^]]*)\\]", "\\1", foo) )
>
> -- 
> Brian D. Ripley,                  ripley at stats.ox.ac.uk
> Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
> University of Oxford,             Tel:  +44 1865 272861 (self)
> 1 South Parks Road,                     +44 1865 272866 (PA)
> Oxford OX1 3TG, UK                Fax:  +44 1865 272595

_____________________________

Baptiste Auguié

School of Physics
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK

Phone: +44 1392 264187

http://newton.ex.ac.uk/research/emag



More information about the R-help mailing list