# [R] cut in R

Peter Dalgaard p.dalgaard at biostat.ku.dk
Thu Jul 21 10:04:57 CEST 2005

```"Steve Su" <s.su at qut.edu.au> writes:

> 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.

What do you need it for? It gives you a factor with only one group, so
I suppose that the idea is that this is more likely to be due to a
programming error.

(However, I spot a bit of a bug in that we don't set
include.lowest=TRUE when using breaks as a number:

> x <- round(rnorm(20),2)
> x
[1]  0.66 -2.22 -0.70 -1.68  0.38 -0.23 -0.43 -0.72  0.30 -0.22 -1.36
> 0.60
[13]  0.44 -0.40 -0.61  1.08 -0.41 -0.02 -1.41 -0.49
> cut(x,breaks=3)
[1] (-0.0189,1.08]  (-2.22,-1.12]   (-1.12,-0.0189] (-2.22,-1.12]
[5] (-0.0189,1.08]  (-1.12,-0.0189] (-1.12,-0.0189] (-1.12,-0.0189]
[9] (-0.0189,1.08]  (-1.12,-0.0189] (-2.22,-1.12]   (-0.0189,1.08]
[13] (-0.0189,1.08]  (-1.12,-0.0189] (-1.12,-0.0189] (-0.0189,1.08]
[17] (-1.12,-0.0189] (-1.12,-0.0189] (-2.22,-1.12]   (-1.12,-0.0189]
Levels: (-2.22,-1.12] (-1.12,-0.0189] (-0.0189,1.08]

Notice how -2.22 appears to be inside the interval (-2.22,-1.12] .)

--
O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen   Denmark          Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)                  FAX: (+45) 35327907

```