Introduction to condformat

Sergio Oller

2026-07-09

Quickstart

condformat prints a data frame with cells formatted according to several rules or criteria. It is integrated with the RStudio Viewer or a web browser, and it supports knitr and rmarkdown outputs using both HTML and PDF (\(\LaTeX\)) output formats. Other formats are not supported, although patches to enable them are welcome.

Basic syntax

Its syntax should be familiar to ggplot users, with tidy evaluation.

condformat(a_data_frame) |>          # A data frame to print
  rule_fill_discrete(ColumnA) |>     # Add formatting rules to the data frame
  rule_fill_gradient(ColumnB)

Example:

data(iris)
library(condformat)
condformat(iris[c(1:5,70:75, 120:125),]) |>
  rule_fill_discrete(Species) |>
  rule_fill_discrete(c(Sepal.Width, Sepal.Length),
                     expression = Sepal.Width > Sepal.Length - 2.25,
                     colours = c("TRUE" = "#7D00FF")) |>
  rule_fill_gradient2(Petal.Length) |>
  rule_text_bold(Sepal.Length, Species == "setosa") |>
  rule_text_color(Sepal.Length, ifelse(Species == "setosa", "yellow", "")) |>
  rule_fill_bar(Petal.Width, limits = c(0, NA))
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.6 2.5 3.9 1.1 versicolor
7 5.9 3.2 4.8 1.8 versicolor
8 6.1 2.8 4.0 1.3 versicolor
9 6.3 2.5 4.9 1.5 versicolor
10 6.1 2.8 4.7 1.2 versicolor
11 6.4 2.9 4.3 1.3 versicolor
12 6.0 2.2 5.0 1.5 virginica
13 6.9 3.2 5.7 2.3 virginica
14 5.6 2.8 4.9 2.0 virginica
15 7.7 2.8 6.7 2.0 virginica
16 6.3 2.7 4.9 1.8 virginica
17 6.7 3.3 5.7 2.1 virginica

The .col pronoun

When a rule targets several columns at once, its expression can use the .col pronoun to refer to each targeted column’s own values, instead of a single shared expression applied identically to every column. This:

condformat(iris) |>
  rule_fill_discrete(c(Sepal.Length, Sepal.Width), .col > 3)

is equivalent to chaining the rule once per column:

condformat(iris) |>
  rule_fill_discrete(Sepal.Length, Sepal.Length > 3) |>
  rule_fill_discrete(Sepal.Width, Sepal.Width > 3)

.col works the same way in rule_fill_gradient(), rule_fill_gradient2(), rule_fill_bar(), rule_text_bold(), rule_text_color() and rule_css(). If expression is omitted entirely, it now defaults to .col, so each selected column is formatted based on its own values.