[R] levels values of cut()
Prof Brian Ripley
ripley at stats.ox.ac.uk
Sat Aug 9 17:45:51 CEST 2008
On Sat, 9 Aug 2008, baptiste auguie wrote:
> 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().
Already there in R-devel ....
>
>
>> 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
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
--
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
More information about the R-help
mailing list