This function creates a formattable data frame by attaching column or area formatters to the data frame. Each time the data frame is printed or converted to string representation, the formatter function will use the formatter functions to generate formatted cells.
# S3 method for class 'data.frame'
formattable(
x,
...,
formatter = "format_table",
preproc = NULL,
postproc = NULL
)
a data.frame
arguments to be passed to formatter
.
formatting function, format_table()
in default.
pre-processor function that prepares x
for
formatting function.
post-processor function that transforms formatted output for printing.
a formattable data.frame
The formattable data frame is a data frame with lazy-bindings of prespecified column formatters or area formatters. The formatters will not be applied until the data frame is printed to console or in a dynamic document. If the formatter function has no side effect, the formattable data frame will not be changed even if the formatters are applied to produce the printed version.
# mtcars (mpg in red)
formattable(mtcars,
list(mpg = formatter("span", style = "color:red")))
# mtcars (mpg in red if greater than median)
formattable(mtcars, list(mpg = formatter("span",
style = function(x) ifelse(x > median(x), "color:red", NA))))
# mtcars (mpg in red if greater than median, using formula)
formattable(mtcars, list(mpg = formatter("span",
style = x ~ ifelse(x > median(x), "color:red", NA))))
# mtcars (mpg in gradient: the higher, the redder)
formattable(mtcars, list(mpg = formatter("span",
style = x ~ style(color = rgb(x/max(x), 0, 0)))))
# mtcars (mpg background in gradient: the higher, the redder)
formattable(mtcars, list(mpg = formatter("span",
style = x ~ style(display = "block",
"border-radius" = "4px",
"padding-right" = "4px",
color = "white",
"background-color" = rgb(x/max(x), 0, 0)))))
# mtcars (mpg in red if vs == 1 and am == 1)
formattable(mtcars, list(mpg = formatter("span",
style = ~ style(color = ifelse(vs == 1 & am == 1, "red", NA)))))
# hide columns
formattable(mtcars, list(mpg = FALSE, cyl = FALSE))
# area formatting
formattable(mtcars, list(area(col = vs:carb) ~ formatter("span",
style = x ~ style(color = ifelse(x > 0, "red", NA)))))
df <- data.frame(a = rnorm(10), b = rnorm(10), c = rnorm(10))
formattable(df, list(area() ~ color_tile("transparent", "lightgray")))
formattable(df, list(area(1:5) ~ color_tile("transparent", "lightgray")))
formattable(df, list(area(1:5) ~ color_tile("transparent", "lightgray"),
area(6:10) ~ color_tile("transparent", "lightpink")))