[R] Intervals in function cut

jim holtman jholtman at gmail.com
Tue Nov 8 03:00:14 CET 2011


In stepping through 'cut.default' that is called, I get the following interval:

 -0.008  0.994  1.996  2.998  4.000  5.002  6.004  7.006  8.008

In printing out to three significant digits, you will have "(0.994,
2]"  or "(2,3]" as you see in the factors.

If instead you used:

cut(x, b = 8, dig.lab = 7)

you will get:

cut(x, b= 8, dig.lab=7)
 [1] (-0.008,0.994] (-0.008,0.994] (-0.008,0.994] (-0.008,0.994]
(-0.008,0.994] (-0.008,0.994]
 [7] (-0.008,0.994] (-0.008,0.994] (-0.008,0.994] (0.994,1.996]
(0.994,1.996]  (0.994,1.996]
[13] (0.994,1.996]  (1.996,2.998]  (1.996,2.998]  (1.996,2.998]
(1.996,2.998]  (1.996,2.998]
[19] (1.996,2.998]  (2.998,4]      (2.998,4]      (2.998,4]
(2.998,4]      (2.998,4]
[25] (4,5.002]      (4,5.002]      (4,5.002]      (4,5.002]
(4,5.002]      (4,5.002]
[31] (4,5.002]      (4,5.002]      (4,5.002]      (4,5.002]
(4,5.002]      (4,5.002]
[37] (4,5.002]      (5.002,6.004]  (5.002,6.004]  (5.002,6.004]
(5.002,6.004]  (5.002,6.004]
[43] (6.004,7.006]  (6.004,7.006]  (6.004,7.006]  (7.006,8.008]
(7.006,8.008]  (7.006,8.008]
[49] (7.006,8.008]  (7.006,8.008]
8 Levels: (-0.008,0.994] (0.994,1.996] (1.996,2.998] (2.998,4]
(4,5.002] ... (7.006,8.008]

aren't floating point numbers fun; read FAQ 7.31

On Mon, Nov 7, 2011 at 7:48 PM, JulioSergio <juliosergio at gmail.com> wrote:
> When I was studying the function cut I found this example:
>
>> x <- rep(0:8, tx0)
>> x
>  [1] 0 0 0 0 0 0 0 0 0 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 4 4 4 5 5 5 5 5 5
> 5 5 5 5 6
> [39] 6 6 6 6 7 7 7 8 8 8 8 8
>
>> cut(x, b = 8)
>  [1] (-0.008,0.994] (-0.008,0.994] (-0.008,0.994] (-0.008,0.994]
> (-0.008,0.994]
>  [6] (-0.008,0.994] (-0.008,0.994] (-0.008,0.994] (-0.008,0.994] (0.994,2]
> [11] (0.994,2]      (0.994,2]      (0.994,2]      (2,3]          (2,3]
> [16] (2,3]          (2,3]          (2,3]          (2,3]          (3,4]
> [21] (3,4]          (3,4]          (3,4]          (3,4]          (4,5]
> [26] (4,5]          (4,5]          (4,5]          (4,5]          (4,5]
> [31] (4,5]          (4,5]          (4,5]          (4,5]          (4,5]
> [36] (4,5]          (4,5]          (5,6]          (5,6]          (5,6]
> [41] (5,6]          (5,6]          (6,7.01]       (6,7.01]       (6,7.01]
> [46] (7.01,8.01]    (7.01,8.01]    (7.01,8.01]    (7.01,8.01]    (7.01,8.01]
> 8 Levels: (-0.008,0.994] (0.994,2] (2,3] (3,4] (4,5] (5,6] ... (7.01,8.01]
>
> I undestand that the resulting factor yields as its first component the
> corresponding "intervals" that the original vector (x) elements belong to.
> So, clearly, the first element of x, 0, belongs to (-0.008,0.994] because
> -0.008 < 0 <= 0.994. However, when I come to the 14th element of x,
> that is, 2, I don't see that it belongs to (2,3], because 2 < 2 <= 3,
> is strictly false according to the standard inverval notation
> (http://en.wikipedia.org/wiki/Interval_notation). Maybe, there is something
> I have not understood of either the cut function or the interval notation.
> Do you have
> any comments?
>
> Thanks,
>
> Sergio.
>
> ______________________________________________
> 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.
>



-- 
Jim Holtman
Data Munger Guru

What is the problem that you are trying to solve?
Tell me what you want to do, not how you want to do it.



More information about the R-help mailing list