Wherever there are numerical data that are very large in value, replacement
text may be better for explanatory purposes. sub_large_vals() allows for
this replacement through specification of a threshold, a large_pattern,
and the sign (positive or negative) of the values to be considered.
Usage
sub_large_vals(
data,
columns = everything(),
rows = everything(),
threshold = 1e+12,
large_pattern = ">={x}",
sign = "+"
)Arguments
- data
The gt table data object
obj:<gt_tbl>// requiredThis is the gt table object that is commonly created through use of the
gt()function.- columns
Columns to target
<column-targeting expression>// default:everything()The columns to which substitution operations are constrained. Can either be a series of column names provided in
c(), a vector of column indices, or a select helper function (e.g.starts_with(),ends_with(),contains(),matches(),num_range(), andeverything()).- rows
Rows to target
<row-targeting expression>// default:everything()In conjunction with
columns, we can specify which of their rows should form a constraint for targeting operations. The defaulteverything()results in all rows incolumnsbeing formatted. Alternatively, we can supply a vector of row IDs withinc(), a vector of row indices, or a select helper function (e.g.starts_with(),ends_with(),contains(),matches(),num_range(), andeverything()). We can also use expressions to filter down to the rows we need (e.g.,[colname_1] > 100 & [colname_2] < 50).- threshold
Threshold value
scalar<numeric|integer>// default:1E12The threshold value with which values should be considered large enough for replacement.
- large_pattern
Pattern specification for large values
scalar<character>// default:">={x}"The pattern text to be used in place of the suitably large values in the rendered table.
- sign
Consider positive or negative values?
scalar<character>// default:"+"The sign of the numbers to be considered in the replacement. By default, we only consider positive values (
"+"). The other option ("-") can be used to consider only negative values.
Examples
Let's generate a simple, single-column tibble that contains an assortment of values that could potentially undergo some substitution.
tbl <- dplyr::tibble(num = c(0, NA, 10^(8:14)))
tbl
#> # A tibble: 9 x 1
#> num
#> <dbl>
#> 1 0
#> 2 NA
#> 3 1e 8
#> 4 1e 9
#> 5 1e10
#> 6 1e11
#> 7 1e12
#> 8 1e13
#> 9 1e14The tbl object contains a variety of larger numbers and some might be
larger enough to reformat with a threshold value. With sub_large_vals() we
can do just that:
tbl |>
gt() |>
fmt_number(columns = num) |>
sub_large_vals()
Large negative values can also be handled but they are handled specially by
the sign parameter. Setting that to "-" will format only the large values
that are negative. Notice that with the default large_pattern value of
">={x}" the ">=" is automatically changed to "<=".
tbl |>
dplyr::mutate(num = -num) |>
gt() |>
fmt_number(columns = num) |>
sub_large_vals(sign = "-")
You don't have to settle with the default threshold value or the default
replacement pattern (in large_pattern). This can be changed and the
"{x}" in large_pattern (which uses the threshold value) can even be
omitted.
tbl |>
gt() |>
fmt_number(columns = num) |>
sub_large_vals(
threshold = 5E10,
large_pattern = "hugemongous"
)
See also
Other data formatting functions:
data_color(),
fmt(),
fmt_auto(),
fmt_bins(),
fmt_bytes(),
fmt_chem(),
fmt_country(),
fmt_currency(),
fmt_date(),
fmt_datetime(),
fmt_duration(),
fmt_email(),
fmt_engineering(),
fmt_flag(),
fmt_fraction(),
fmt_icon(),
fmt_image(),
fmt_index(),
fmt_integer(),
fmt_markdown(),
fmt_number(),
fmt_number_si(),
fmt_partsper(),
fmt_passthrough(),
fmt_percent(),
fmt_roman(),
fmt_scientific(),
fmt_spelled_num(),
fmt_tf(),
fmt_time(),
fmt_units(),
fmt_url(),
sub_missing(),
sub_small_vals(),
sub_values(),
sub_zero()