Type: | Package |
Title: | Conditional Formatting in Data Frames |
Version: | 0.10.1 |
Date: | 2023-10-08 |
URL: | https://zeehio.github.io/condformat/, https://github.com/zeehio/condformat |
BugReports: | https://github.com/zeehio/condformat/issues |
Description: | Apply and visualize conditional formatting to data frames in R. It renders a data frame with cells formatted according to criteria defined by rules, using a tidy evaluation syntax. The table is printed either opening a web browser or within the 'RStudio' viewer if available. The conditional formatting rules allow to highlight cells matching a condition or add a gradient background to a given column. This package supports both 'HTML' and 'LaTeX' outputs in 'knitr' reports, and exporting to an 'xlsx' file. |
License: | BSD_3_clause + file LICENSE |
NeedsCompilation: | no |
Imports: | dplyr (≥ 0.7.7), grDevices, gridExtra (≥ 2.3), gtable (≥ 0.2.0), htmlTable (≥ 1.9), htmltools (≥ 0.3.6), knitr (≥ 1.20), magrittr (≥ 1.5), openxlsx (≥ 4.1.5), rmarkdown (≥ 1.10), rlang (≥ 0.3.0), scales (≥ 1.0.0), tibble (≥ 1.3.4), tidyselect (≥ 1.0.0) |
Suggests: | promises, shiny (≥ 1.0.5), testthat (≥ 1.0), vdiffr (≥ 1.0.4) |
VignetteBuilder: | knitr |
Encoding: | UTF-8 |
RoxygenNote: | 7.2.3 |
Packaged: | 2023-10-08 06:34:48 UTC; sergio |
Author: | Sergio Oller Moreno
|
Maintainer: | Sergio Oller Moreno <sergioller@gmail.com> |
Repository: | CRAN |
Date/Publication: | 2023-10-08 07:00:02 UTC |
How to export a cf_field to CSS
Description
This method is exported so package users can generate their own rules
Usage
cf_field_to_css(cf_field, xview, css_fields, unlocked)
Arguments
cf_field |
A cf_field object. This is like a rule, but with the computed colour values. It usually maps one-to-one to a CSS field. |
xview |
A data frame with the columns to be printed and rows filtered |
css_fields |
A list of matrices. The names of the list are CSS attributes and each matrix is of the size of xview and contains the respective CSS values. |
unlocked |
A logical matrix of cells unlocked (that can still be modified by further rules). |
Value
A list with two elements: css_fields and unlocked (with updated values)
How to export a cf_field to grob
Description
This method is exported so package users can generate their own rules
Usage
cf_field_to_gtable(
cf_field,
xview,
gridobj,
unlocked,
has_rownames,
has_colnames
)
Arguments
cf_field |
A cf_field object. This is like a rule, but with the computed colour values. It usually maps one-to-one to a CSS field. |
xview |
A data frame with the columns to be printed and rows filtered |
gridobj |
The tableGrob object |
unlocked |
A logical matrix of cells unlocked (that can still be modified by further rules). |
has_rownames |
Whether or not the gridobj has a first column with row names |
has_colnames |
Whether or not the gridobj has a first row with column names |
Value
A list with two elements: gridobj and unlocked (with updated values)
How to export cf values to latex
Description
How to export cf values to latex
Usage
cf_field_to_latex(cf_field, xview, unlocked)
Arguments
cf_field |
A cf_field object. This is like a rule, but with the computed colour values. It usually maps one-to-one to a CSS field. |
xview |
A data frame with the columns to be printed and rows filtered |
unlocked |
A logical matrix of cells unlocked (that can still be modified by further rules). |
Value
A list with two character matrices named before
and after
. Both
of these matrices must be of the same size as xview
.
Conditional formatting for data frames
Description
A condformat_tbl
object is a data frame with attributes regarding
the formatting of their cells, that can be viewed when the condformat_tbl
object is printed.
Usage
condformat(x)
Arguments
x |
A matrix or data.frame |
Value
The condformat_tbl
object. This object can be piped to apply
conditional formatting rules. It can also be used as a conventional
data frame.
The condformat_tbl
print method generates an htmlTable
, to be
viewed using the 'RStudio Viewer' or an 'HTML browser', as available.
Examples
data(iris)
cf <- condformat(iris[1:5,])
## Not run:
print(cf)
## End(Not run)
cf <- condformat(iris[1:5,]) %>% rule_fill_gradient(Sepal.Length)
## Not run:
print(cf)
## End(Not run)
cf <- condformat(iris[1:5,]) %>%
rule_fill_discrete(Sepal.Length, expression=Sepal.Width > 2)
## Not run:
print(cf)
## End(Not run)
Shiny bindings for condformat
Description
Output and render functions for using condformat within Shiny applications and interactive Rmd documents.
Usage
condformatOutput(outputId, ...)
renderCondformat(expr, env = parent.frame(), quoted = FALSE)
condformat_example(display.mode = "normal")
Arguments
outputId |
output variable to read from |
... |
arguments passed to htmlOutput |
expr |
An expression that generates a condformat object |
env |
The environment in which to evaluate |
quoted |
Is |
display.mode |
The mode in which to display the application. If set to
the value |
Writes the table to an Excel workbook
Description
Writes the table to an Excel workbook
Usage
condformat2excel(
x,
filename,
sheet_name = "Sheet1",
overwrite_wb = FALSE,
overwrite_sheet = TRUE
)
Arguments
x |
A condformat_tbl object |
filename |
The xlsx file name. |
sheet_name |
The name of the sheet where the table will be written |
overwrite_wb |
logical to overwrite the whole workbook file |
overwrite_sheet |
logical to overwrite the sheet |
Converts the table to a grid object
Description
Converts the table to a grid object
Usage
condformat2grob(x, draw = TRUE)
Arguments
x |
A condformat_tbl object |
draw |
A logical. If |
Value
the grid object
Examples
library(condformat)
data.frame(Student = c("Alice", "Bob", "Charlie"),
Evaluation = c("Great", "Well done", "Good job!")) %>%
condformat() %>%
condformat2grob()
Converts the table to a htmlTable object
Description
Converts the table to a htmlTable object
Usage
condformat2html(x)
Arguments
x |
A condformat_tbl object |
Value
the htmlTable object
Examples
data(iris)
cf <- condformat2html(condformat(iris[1:5,]))
## Not run:
print(cf)
## End(Not run)
Converts the table to LaTeX code
Description
Converts the table to LaTeX code
Usage
condformat2latex(x)
Arguments
x |
A condformat_tbl object |
Value
A character vector of the table source code
Converts the table to a htmlTableWidget
Description
Converts the table to a htmlTableWidget
Usage
condformat2widget(x, ...)
Arguments
x |
A condformat_tbl object |
... |
Deprecated: Arguments passed to htmlTable::htmlTableWidget |
Value
the htmlTable widget
Examples
## Not run:
data(iris)
cf <- condformat2widget(condformat(iris[1:5,]))
\dontrun{
print(cf)
}
## End(Not run)
Print method for knitr, exporting to HTML or LaTeX as needed
Description
Print method for knitr, exporting to HTML or LaTeX as needed
Usage
## S3 method for class 'condformat_tbl'
knit_print(x, ...)
Arguments
x |
Object to print |
... |
On a LaTeX output these are unused. On an HTML output can have |
Prints the data frame in an HTML page and shows it.
Description
Prints the data frame in an HTML page and shows it.
Usage
## S3 method for class 'condformat_tbl'
print(x, ..., paginate = TRUE)
Arguments
x |
A |
... |
Arguments passed on to
|
paginate |
A logical value. If |
Value
the value returned by htmlTable::htmlTable()
Examples
data(iris)
## Not run:
print(condformat(iris[1:5,]))
## End(Not run)
Objects exported from other packages
Description
These objects are imported from other packages. Follow the links below to see their documentation.
- magrittr
Apply a CSS style property as a conditional formatting rule
Description
Apply a CSS style property as a conditional formatting rule
Usage
rule_css(x, columns, expression, css_field, na.value = "", lockcells = FALSE)
Arguments
x |
A condformat object, typically created with |
columns |
A character vector with column names to be coloured. Optionally
|
expression |
This expression should evaluate to an array of the values |
css_field |
CSS style property name (e.g. |
na.value |
CSS property value to be used in missing values (e.g. |
lockcells |
logical value determining if no further rules should be applied to the affected cells. |
See Also
Other rule:
rule_fill_bar()
,
rule_fill_discrete()
,
rule_fill_gradient2()
,
rule_fill_gradient()
,
rule_text_bold()
,
rule_text_color()
Examples
data(iris)
cf <- condformat(iris[c(1:5, 51:55, 101:105),]) %>%
rule_css(Species, expression = ifelse(Species == "setosa", "red", "darkgreen"),
css_field = "color")
## Not run:
print(cf)
## End(Not run)
Fill column with a bar of a length proportional to a value
Description
Fills the background of a column cell using a bar proportional to the value of the cell
Usage
rule_fill_bar(
x,
columns,
expression,
low = "darkgreen",
high = "white",
background = "white",
na.value = "gray",
limits = NA,
lockcells = FALSE
)
Arguments
x |
A condformat object, typically created with |
columns |
A character vector with column names to be coloured. Optionally
|
expression |
an expression to be evaluated with the data. It should evaluate to a numeric vector, that will be used to determine the colour gradient level. |
low |
Colour for the beginning of the bar |
high |
Colour for the end of the bar |
background |
Background colour for the cell |
na.value |
Colour for missing values |
limits |
range of limits that the gradient should cover |
lockcells |
logical value determining if no further rules should be applied to the affected cells. |
Value
The condformat_tbl object, with the added formatting information
See Also
Other rule:
rule_css()
,
rule_fill_discrete()
,
rule_fill_gradient2()
,
rule_fill_gradient()
,
rule_text_bold()
,
rule_text_color()
Examples
data(iris)
cf <- condformat(iris[c(1:5, 70:75, 120:125), ]) %>% rule_fill_bar("Sepal.Length")
## Not run:
print(cf)
## End(Not run)
Fill column with discrete colors
Description
Fills a column or columns of a data frame using a discrete colour palette, based on an expression.
Usage
rule_fill_discrete(
x,
columns,
expression,
colours = NA,
na.value = "#FFFFFF",
h = c(0, 360) + 15,
c = 100,
l = 65,
h.start = 0,
direction = 1,
lockcells = FALSE
)
Arguments
x |
A condformat object, typically created with |
columns |
A character vector with column names to be coloured. Optionally
|
expression |
an expression to be evaluated with the data. It should evaluate to a logical or an integer vector, that will be used to determine which cells are to be coloured. |
colours |
a character vector with colours as values and the expression possible results as names. |
na.value |
a character string with the CSS color to be used in missing values |
h |
range of hues to use, in [0, 360] |
c |
chroma (intensity of colour), maximum value varies depending on combination of hue and luminance. |
l |
luminance (lightness), in [0, 100] |
h.start |
hue to start at |
direction |
direction to travel around the colour wheel, 1 = clockwise, -1 = counter-clockwise |
lockcells |
logical value determining if no further rules should be applied to the affected cells. |
Value
The condformat_tbl object, with the added formatting information
See Also
Other rule:
rule_css()
,
rule_fill_bar()
,
rule_fill_gradient2()
,
rule_fill_gradient()
,
rule_text_bold()
,
rule_text_color()
Examples
data(iris)
cf <- condformat(iris[c(1:5, 70:75, 120:125), ]) %>%
rule_fill_discrete("Species", colours = c("setosa" = "red",
"versicolor" = "blue",
"virginica" = "green")) %>%
rule_fill_discrete("Sepal.Length", expression = Sepal.Length > 4.6,
colours=c("TRUE"="red"))
## Not run:
print(cf)
## End(Not run)
cf <- condformat(iris[c(1:5, 70:75, 120:125), ]) %>%
rule_fill_discrete(c(starts_with("Sepal"), starts_with("Petal")),
expression = Sepal.Length > 4.6,
colours=c("TRUE"="red"))
## Not run:
print(cf)
## End(Not run)
Fill column with sequential colour gradient
Description
Fills the background color of a column using a gradient based on the values given by an expression
Usage
rule_fill_gradient(
x,
columns,
expression,
low = "#132B43",
high = "#56B1F7",
space = "Lab",
na.value = "#7F7F7F",
limits = NA,
lockcells = FALSE
)
Arguments
x |
A condformat object, typically created with |
columns |
A character vector with column names to be coloured. Optionally
|
expression |
an expression to be evaluated with the data. It should evaluate to a numeric vector, that will be used to determine the colour gradient level. |
low |
colour for low end of gradient. |
high |
colour for high end of gradient. |
space |
colour space in which to calculate gradient. Must be "Lab" - other values are deprecated. |
na.value |
fill color for missing values |
limits |
range of limits that the gradient should cover |
lockcells |
logical value determining if no further rules should be applied to the affected cells. |
Value
The condformat_tbl object, with the added formatting information
See Also
Other rule:
rule_css()
,
rule_fill_bar()
,
rule_fill_discrete()
,
rule_fill_gradient2()
,
rule_text_bold()
,
rule_text_color()
Examples
data(iris)
cf <- condformat(iris[c(1:5, 70:75, 120:125), ]) %>%
rule_fill_gradient(Sepal.Length) %>%
rule_fill_gradient(Species, expression=Sepal.Length - Sepal.Width)
## Not run:
print(cf)
## End(Not run)
cf <- condformat(iris[c(1:5, 70:75, 120:125), ]) %>%
rule_fill_gradient("Petal.Length") %>%
rule_fill_gradient(starts_with("Sepal"), expression=Sepal.Length - Sepal.Width)
## Not run:
print(cf)
## End(Not run)
Fill column with sequential color gradient
Description
Fills the background color of a column using a gradient based on the values given by an expression
Usage
rule_fill_gradient2(
x,
columns,
expression,
low = scales::muted("red"),
mid = "white",
high = scales::muted("blue"),
midpoint = NA,
space = "Lab",
na.value = "#7F7F7F",
limits = NA,
lockcells = FALSE
)
Arguments
x |
A condformat object, typically created with |
columns |
A character vector with column names to be colored. Optionally
|
expression |
an expression to be evaluated with the data. It should evaluate to a logical or an integer vector, that will be used to determine which cells are to be colored. |
low |
colour for low end of gradient. |
mid |
colour for mid point |
high |
colour for high end of gradient. |
midpoint |
the value used for the middle color (the median by default) |
space |
colour space in which to calculate gradient. Must be "Lab" - other values are deprecated. |
na.value |
fill color for missing values |
limits |
range of limits that the gradient should cover |
lockcells |
logical value determining if no further rules should be applied to the affected cells. |
Value
The condformat_tbl object, with the added formatting information
See Also
Other rule:
rule_css()
,
rule_fill_bar()
,
rule_fill_discrete()
,
rule_fill_gradient()
,
rule_text_bold()
,
rule_text_color()
Examples
data(iris)
cf <- condformat(iris[c(1:5, 70:75, 120:125), ]) %>%
rule_fill_gradient2(Sepal.Length) %>%
rule_fill_gradient2(Species, expression=Sepal.Length - Sepal.Width)
## Not run:
print(cf)
## End(Not run)
cf <- condformat(iris[c(1:5, 70:75, 120:125), ]) %>%
rule_fill_gradient2("Petal.Length") %>%
rule_fill_gradient2(starts_with("Sepal"), expression=Sepal.Length - Sepal.Width)
## Not run:
print(cf)
## End(Not run)
Use bold text if a condition is met
Description
Use bold text if a condition is met
Usage
rule_text_bold(x, columns, expression, na.bold = FALSE, lockcells = FALSE)
Arguments
x |
A condformat object, typically created with |
columns |
A character vector with column names to be coloured. Optionally
|
expression |
Condition that evaluates to |
na.bold |
If |
lockcells |
logical value determining if no further rules should be applied to the affected cells. |
See Also
Other rule:
rule_css()
,
rule_fill_bar()
,
rule_fill_discrete()
,
rule_fill_gradient2()
,
rule_fill_gradient()
,
rule_text_color()
Examples
data(iris)
cf <- condformat(iris[c(1:5, 51:55, 101:105),]) %>%
rule_text_bold(Species, expression = Species == "setosa")
## Not run:
print(cf)
## End(Not run)
Give a color to the text according to some expression
Description
Give a color to the text according to some expression
Usage
rule_text_color(x, columns, expression, na.color = "", lockcells = FALSE)
Arguments
x |
A condformat object, typically created with |
columns |
A character vector with column names to be coloured. Optionally
|
expression |
Condition that evaluates to color names for the rows where text should be colored |
na.color |
Color for missing values |
lockcells |
logical value determining if no further rules should be applied to the affected cells. |
See Also
Other rule:
rule_css()
,
rule_fill_bar()
,
rule_fill_discrete()
,
rule_fill_gradient2()
,
rule_fill_gradient()
,
rule_text_bold()
Examples
data(iris)
cf <- condformat(iris[c(1:5, 51:55, 101:105),]) %>%
rule_text_color(Species, expression = ifelse(Species == "setosa", "blue", ""))
## Not run:
print(cf)
## End(Not run)
Selects the variables to be printed
Description
Keeps the variables you mention in the printed table.
Compared to dplyr::select()
, show_columns does not remove the
columns from the data frame, so formatting rules can still depend
on them.
Usage
show_columns(x, columns, col_names)
Arguments
x |
A condformat object, typically created with |
columns |
A character vector with column names to be to show. It can also be an expression
can be used that will be parsed according to |
col_names |
Character vector with the column names for the selected columns |
Value
The condformat object with the rule added
See Also
Examples
data(iris)
x <- head(iris)
# Include some columns:
cf <- condformat(x) %>% show_columns(c(Sepal.Length, Sepal.Width, Species))
## Not run:
print(cf)
## End(Not run)
cf <- condformat(x) %>% show_columns(c("Sepal.Length", "Sepal.Width", "Species"))
## Not run:
print(cf)
## End(Not run)
# Rename columns:
cf <- condformat(x) %>%
show_columns(c(Sepal.Length, Species),
col_names = c("Length", "Spec."))
## Not run:
print(cf)
## End(Not run)
# Exclude some columns:
cf <- condformat(x) %>% show_columns(c(-Petal.Length, -Petal.Width))
## Not run:
print(cf)
## End(Not run)
cf <- condformat(x) %>% show_columns(c(starts_with("Petal"), Species))
## Not run:
print(cf)
## End(Not run)
petal_width <- "Petal.Width"
cf <- condformat(x) %>% show_columns(!! petal_width)
## Not run:
print(cf)
## End(Not run)
Selects the rows to be printed
Description
Keeps the rows you mention in the printed table.
Compared to dplyr::filter()
, show_rows does not remove the
rows from the actual data frame, they are removed only for printing.
Usage
show_rows(x, ...)
Arguments
x |
condformat_tbl object |
... |
Expressions used for filtering |
Value
A condformat_show_rows object, usually to be added to a condformat_tbl object as shown in the examples
See Also
Examples
library(condformat)
data(iris)
x <- head(iris)
cf <- condformat(x) %>% show_rows(Sepal.Length > 4.5, Species == "setosa")
## Not run:
print(cf)
## End(Not run)
# Use it programatically
expr_as_text <- 'Sepal.Length > 4.5'
expr <- rlang::parse_expr(expr_as_text)
cf <- condformat(x) %>% show_rows(!! expr)
## Not run:
print(cf)
## End(Not run)
# With multiple arguments:
expr_as_text <- c('Sepal.Length > 4.5', 'Species == "setosa"')
exprs <- lapply(expr_as_text, rlang::parse_expr)
cf <- condformat(x) %>% show_rows(!!! exprs)
## Not run:
print(cf)
## End(Not run)
Sets the caption of a condformat object
Description
The advantage with respect to theme_htmlTable(caption = "My table") is that this works with HTML and LaTeX outputs
Usage
theme_caption(x, caption = "")
Arguments
x |
The condformat object |
caption |
The caption to show |
Examples
data(iris)
cf <- condformat(head(iris)) %>%
theme_caption(caption = "My Caption")
## Not run:
print(cf)
## End(Not run)
Customizes appearance of condformat object
Description
This is only used on grob output.
Usage
theme_grob(x, ...)
Arguments
x |
The condformat object |
... |
Arguments to be passed to gridExtra::tableGrob (see examples) |
See Also
Examples
data(iris)
cf <- condformat(head(iris)) %>%
theme_grob(
rows = NULL,
theme = gridExtra::ttheme_default(base_size = 10, base_colour = "red")
)
condformat2grob(cf)
Customizes appearance of condformat object
Description
Customizes appearance of condformat object
Usage
theme_htmlTable(x, ...)
Arguments
x |
The condformat object |
... |
Arguments to be passed to htmlTable |
See Also
Examples
data(iris)
cf <- condformat(head(iris)) %>%
theme_htmlTable(caption="Table 1: My iris table", rnames=FALSE)
## Not run:
print(cf)
## End(Not run)
Customizes appearance of condformat object
Description
Customizes appearance of condformat object
Usage
theme_htmlWidget(x, ...)
Arguments
x |
The condformat object |
... |
Arguments to be passed to htmlTable::htmlTableWidget (see examples) |
See Also
Examples
data(iris)
cf <- condformat(head(iris)) %>%
theme_htmlWidget(number_of_entries = c(10, 25, 100),
width = NULL, height = NULL, elementId = NULL)
## Not run:
print(cf)
## End(Not run)
Customizes appearance of condformat object
Description
This is only used on LaTeX output.
Usage
theme_kable(x, ...)
Arguments
x |
The condformat object |
... |
Arguments to be passed to knitr::kable (see examples) |
See Also
Examples
data(iris)
cf <- condformat(head(iris)) %>%
theme_kable(booktabs = TRUE, caption = "My Caption")
## Not run:
print(cf)
## End(Not run)