Skip to contents

These labels are the most exact, since they show you whether intervals are "closed" or "open", i.e. whether they include their endpoints.

Usage

lbl_intervals(
  fmt = NULL,
  single = "{{{l}}}",
  first = NULL,
  last = NULL,
  raw = FALSE
)

Arguments

fmt

String, list or function. A format for break endpoints.

single

Glue string: label for singleton intervals. See lbl_glue() for details.

first

Glue string: override label for the first category. Write e.g. first = "<{r}" to create a label like "<18". See lbl_glue() for details.

last

String: override label for the last category. Write e.g. last = ">{l}" to create a label like ">65". See lbl_glue() for details.

raw

[Deprecated]. Use the raw argument to chop() instead.

Value

A function that creates a vector of labels.

Details

Mathematical set notation looks like this:

  • [a, b]: all numbers x where a <= x <= b;

  • (a, b): all numbers where a < x < b;

  • [a, b): all numbers where a <= x < b;

  • (a, b]: all numbers where a < x <= b;

  • {a}: just the number a exactly.

Formatting endpoints

If fmt is not NULL then it is used to format the endpoints.

  • If fmt is a string, then numeric endpoints will be formatted by sprintf(fmt, breaks); other endpoints, e.g. Date objects, will be formatted by format(breaks, fmt).

  • If fmt is a list, then it will be used as arguments to format.

  • If fmt is a function, it should take a vector of numbers (or other objects that can be used as breaks) and return a character vector. It may be helpful to use functions from the {scales} package, e.g. scales::label_comma().

See also

Other labelling functions: lbl_dash(), lbl_discrete(), lbl_endpoints(), lbl_glue(), lbl_manual(), lbl_midpoints(), lbl_seq()

Examples


tab(-10:10, c(-3, 0, 0, 3),
      labels = lbl_intervals())
#> [-10, -3)   [-3, 0)       {0}    (0, 3)   [3, 10] 
#>         7         3         1         2         8 

tab(-10:10, c(-3, 0, 0, 3),
      labels = lbl_intervals(fmt = list(nsmall = 1)))
#> [-10.0,  -3.0) [ -3.0,   0.0)        {  0.0} (  0.0,   3.0) [  3.0,  10.0] 
#>              7              3              1              2              8 

tab_evenly(runif(20), 10,
      labels = lbl_intervals(fmt = percent))
#> [4.835%, 13.97%)  [13.97%, 23.1%)  [23.1%, 32.23%) [32.23%, 41.36%) 
#>                2                2                3                2 
#> [41.36%, 50.49%) [50.49%, 59.62%) [59.62%, 68.75%) [77.88%, 87.02%) 
#>                2                4                1                2 
#> [87.02%, 96.15%] 
#>                2