| Type: | Package |
| Title: | Easily Create and Style Tables for LaTeX, HTML and Other Formats |
| Version: | 5.8.0 |
| Author: | David Hugh-Jones [aut, cre] |
| Maintainer: | David Hugh-Jones <davidhughjones@gmail.com> |
| Description: | Creates styled tables for data presentation. Export to HTML, LaTeX, RTF, 'Word', 'Excel', 'PowerPoint', 'typst', SVG and PNG. Simple, modern interface to manipulate borders, size, position, captions, colours, text styles and number formatting. Table cells can span multiple rows and/or columns. Includes a 'huxreg' function to create regression tables, and 'quick_*' one-liners to print tables to a new document. |
| License: | MIT + file LICENSE |
| URL: | https://hughjonesd.github.io/huxtable/ |
| BugReports: | https://github.com/hughjonesd/huxtable/issues |
| Imports: | assertthat, base64enc, commonmark, fansi, generics, glue,htmltools, memoise, R6, rlang, stats, stringi, stringr (≥1.2.0), tidyselect, utils, xml2 |
| Suggests: | AER, bookdown, broom (≥ 0.5.1), broom.mixed, covr, crayon,devtools, dplyr (≥ 0.7.0), flextable (≥ 0.6.9), ftExtra (≥0.0.2), ggplot2, httr, knitr, lme4, lmtest, lintr, nlme, nnet,officer, openxlsx, psych, quarto, rmarkdown, sandwich, scales,styler, testthat, tibble, tinytex |
| SystemRequirements: | LaTeX packages: adjustbox, array, calc, caption,colortbl, fontspec, graphicx, hhline, hyperref, multirow,siunitx, tabularx, threeparttable, ulem, wrapfig |
| VignetteBuilder: | knitr |
| Encoding: | UTF-8 |
| LazyData: | true |
| RoxygenNote: | 7.3.2 |
| Depends: | R (≥ 2.10) |
| Config/testthat/edition: | 3 |
| NeedsCompilation: | no |
| Packaged: | 2025-11-06 16:42:19 UTC; davidhugh-jones |
| Repository: | CRAN |
| Date/Publication: | 2025-11-07 06:10:36 UTC |
Quick introduction to huxtable
Description
Huxtable is a package for creating HTML and LaTeX tables. It provides similarfunctionality to xtable, with a simpler interface.
Quick start
To create a huxtable object, usehuxtable() oras_huxtable():
library(huxtable) employees <- huxtable( Names = c("Hadley", "Yihui", "Dirk"), Salaries = c(1e5, 1e5, 1e5), add_colnames = TRUE ) car_hux <- as_hux(mtcars)You can then set properties which affect how the huxtable is displayed:
# make the first row bold: bold(employees)[1, ] <- TRUE # change the font size everywhere: font_size(employees) <- 10
Or you can use a tidyverse style with the pipe operator:
library(magrittr)employees <- employees %>% set_font_size(10) %>% set_bold(1, everywhere, TRUE)
For more information, seethe website orread the vignette withvignette("huxtable").
Seehuxtable-FAQ for frequently asked questions, including ways to gethelp.
To report a bug, or suggest an enhancement, visitgithub.
Author(s)
Maintainer: David Hugh-Jonesdavidhughjones@gmail.com
See Also
Useful links:
Replace a subset of a brdr object
Description
Replace a subset of a brdr object
Usage
## S3 replacement method for class 'brdr'x[...] <- valueArguments
x | A |
... | Indices. |
value | A |
Details
You probably don't need to call this directly. If you wantto access border thicknesses, do e.g.
l_borders <- brdr_thickness(left_border(ht))
which will give you a matrix of numbers.
Value
Abrdr() object.
Subset a huxtable
Description
Subset a huxtable
Usage
## S3 method for class 'huxtable'x[i, j, drop = FALSE]## S3 replacement method for class 'huxtable'x[i, j] <- value## S3 replacement method for class 'huxtable'x$name <- value## S3 replacement method for class 'huxtable'x[[i, j]] <- valueArguments
x | A huxtable. |
i | Rows to select. |
j,name | Columns to select. |
drop | Only included for compatibility with |
value | A matrix, data frame, huxtable or similar object. |
Value
[ returns a huxtable.$ and[[ return data from theunderlying data frame.
Replacing existing rows and columns
For the replacement function[<-, ifvalue is a huxtable, then itsproperties will be copied intox. Replacement functions$<- and[[<-replace existing data without affecting any properties.
Adding new rows and columns
If new columns or rows are created, then properties will be copiedfrom the last column or row ofx, or fromvalue ifvalue is a huxtable.
These methods are stricter than their data frame equivalents in some places.You can't add new rows or column at a numeric location without specifying allintervening rows/columns. New values must have the appropriate dimensions(vectors will be interpreted appropriately).
Examples
jams[1:3, ]class(jams[1:3, ])jams[, 1]jams$Typeprices <- huxtable(c("Price", 1.70, 2.00, 2.20))number_format(prices) <- 2bold(prices) <- TRUEjams[, 2] <- pricesjamsdata(jams)jams$price <- c("Price", 1.70, 2.00, 2.20)jamsAdd column or row names
Description
Add a first row of column names, or a first column of row names, to the huxtable.
Usage
add_colnames(ht, rowname = NULL, ...)add_rownames(ht, colname = "rownames", preserve_rownames = TRUE, ...)Arguments
ht | A huxtable. |
rowname | Optional row name for the new row of column names. |
... | Arguments passed to methods. |
colname | Column name for the new column of row names. |
preserve_rownames | Preserve existing row names. |
Details
Note thatadd_colnames will change the mode of all columns to character. Also note that it willmove your rows down by one: what was row 1 will now be row 2, and the column names will now be row 1.
add_colnames preserves column names.add_rownames only preserves them if asked to.
Value
The modified object.
Examples
ht <- huxtable( First = rnorm(5), Second = rnorm(5), add_rownames = FALSE)add_rownames(ht)add_colnames(ht)# Out by 1:add_rownames(add_colnames(ht))# Better:add_colnames(add_rownames(ht))# Alternatively:add_colnames(add_rownames(ht, ""))Add a row with a footnote
Description
This adds a single row at the bottom. The first cell contains the footnote; it spansall table columns and has an optional border above.
Usage
add_footnote(ht, text, border = 0.8, number_format = NA, ...)Arguments
ht | A huxtable. |
text | Text for the footnote. |
border | Width of the footnote's top border. Set to 0 for no border, or |
number_format | Number format for the footnote cell. |
... | Other properties, passed to |
Value
The modified huxtable
Examples
jams <- add_footnote( jams, "* subject to availability")jamsInsert one huxtable into another
Description
These functions combine two huxtables or similar objects andreturn the result.
Usage
add_rows(x, y, after = nrow(x), copy_cell_props = TRUE)add_columns(x, y, after = ncol(x), copy_cell_props = TRUE)Arguments
x,y | Huxtables or objects that can be converted by as_hux |
after | Row or column after which |
copy_cell_props | Logical. Passed to |
Details
Arguments in... can includecopy_cell_props.
Value
A huxtable.
See Also
insert_row() andinsert_column(), which insertmultiple values into a single row.
Examples
ht <- hux("Gooseberry", 2.15)add_rows(jams, ht)add_rows(jams, ht, after = 1)mx <- matrix( c( "Sugar", "50%", "60%", "40%", "Weight (g)", 300, 250, 300 ), 4, 2)add_columns(jams, mx)Set the horizontal alignment of cell content
Description
Values may be "left", "center", "right",NA or a single character. Ifvalue is a single character (e.g. a decimal point), then the cell isaligned on this character.
Usage
align(ht)align(ht) <- valueset_align(ht, row, col, value)map_align(ht, row, col, fn)Arguments
ht | A huxtable. |
value | A character vector or matrix. Set to |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
fn | A mapping function. Seemapping-functions for details. |
Aligning on a decimal point
To align cells on the decimal point, setalign to"." or any other singlecharacter (e.g."," in European languages).
By default, huxtable aligns these cells by padding with spaces. The mechanicsof this were improved for LaTeX in version 5.3.0, but are still not perfect.Using a fixed-width font may help.
Ifoptions("huxtable.latex_siunitx_align") is set toTRUE, then inLaTeX output, numbers in these cells will be surrounded by\\tablenum{}.See the siunitx documentation for more details. Note that this may haveother side-effects, for example1e3 becomes1 x 10^3.
To use non-default decimal points, set bothalign(ht) andnumber_format(). See the example.
Examples
numbers <- c(1, 1.5, 1.03, 10, 10.01)number_hux <- as_hux(matrix(numbers, 5, 5))number_format(number_hux) <- "%.4g"number_format(number_hux)[, 5] <- fmt_pretty( decimal.mark = ",", big.mark = "")number_hux <- map_align( number_hux, by_cols("left", "center", "right", ".", ","))alignments <- c( "left", "centre", "right", "decimal (.)", "decimal (,)")number_hux <- rbind( alignments, number_hux)align(number_hux)number_huxConvert a huxtable for Excel
Description
If theopenxlsx package is installed, Huxtables can be converted toopenxlsx::openxlsx() Worbook objects, for use in Excel documents.
Usage
as_Workbook(ht, ...)## S3 method for class 'huxtable'as_Workbook( ht, Workbook = NULL, sheet = "Sheet 1", write_caption = TRUE, start_row = 1, start_col = 1, ...)Arguments
ht | A huxtable. |
... | Not used. |
Workbook | An existing |
sheet | Name for the worksheet where the huxtable will be created. Theworksheet will be created if it doesn't exist already. |
write_caption | If |
start_row,start_col | Number. Write data starting at the given row and column. |
Details
Useopenxlsx::saveWorkbook() to save the resulting object to an Excel file.
Properties are supported with the following exceptions:
Non-numeric column widths and row heights, table width and height.
Decimal padding.
Cell padding.
Table position.
Caption width.
Huxtable tries to guess appropriate widths and height for rows and columns; numericwidth() andheight() are treated as scaling factors.
Contents are only stored as numbers if a whole column is "numeric", i.e. canbe converted byas.numeric()). Otherwise, they are stored as text.
Value
An object of classWorkbook.
Examples
wb <- as_Workbook(jams)## Not run: openxlsx::saveWorkbook( wb, "my-excel-file.xlsx")## End(Not run)# multiple sheets in a single workbook:wb <- openxlsx::createWorkbook()wb <- as_Workbook(jams, Workbook = wb, sheet = "sheet1")wb <- as_Workbook( hux("Another", "huxtable"), Workbook = wb, sheet = "sheet2")Convert a huxtable for Word/Powerpoint
Description
Huxtables can be converted toflextable::flextable() objects, for use in Word and Powerpoint documents.
Usage
as_flextable(x, ...)## S3 method for class 'huxtable'as_flextable(x, colnames_to_header = FALSE, ...)Arguments
x | A huxtable. |
... | Not used. |
colnames_to_header | Use huxtable column names as the header. If |
Details
With recent versions of "flextable" and Pandoc, huxtables can be automatically outputtedfrom rmarkdownword_document and/orpowerpoint_presentation documents. (Powerpointpresentations require pandoc version >= 2.4.0.)
Properties are supported, with the following exceptions:
Rotation of 0, 90 or 270 is supported.
Non-numeric widths and heights are not supported. Table heights are treatedas a proportion of 9 inches; table widths are treated as a proportion of 6inches. So e.g.
height(ht) <- 0.5will give a height of 4.5 inches.Table wrap and table position are not supported.
Border style "double" is not supported and becomes "solid".
Captions are supported with recent versions of flextable, but not
caption_pos()orcaption_width().
Value
an object of class flextable.
Challenge
Try to sayas_flextable.huxtable ten times without pausing.
Examples
ht <- hux(a = 1:3, b = 1:3)ft <- as_flextable(ht)## Not run: my_doc <- officer::read_docx()my_doc <- flextable::body_add_flextable( my_doc, ft)print(my_doc, target = "path/to/my_doc.docx")## End(Not run)Convert objects to huxtables
Description
as_huxtable oras_hux converts an object to a huxtable.Conversion methods exist for data frames and tibbles, tables,ftables, matrices and (most) vectors.
Usage
as_huxtable(x, ...)as_hux(x, ...)## Default S3 method:as_huxtable( x, add_colnames = getOption("huxtable.add_colnames", TRUE), add_rownames = FALSE, autoformat = getOption("huxtable.autoformat", TRUE), ...)## S3 method for class 'grouped_df'as_huxtable(x, ..., groups_to_headers = FALSE)is_huxtable(x)is_hux(x)Arguments
x | Object to convert. |
... | Arguments passed on to |
add_colnames | If |
add_rownames | If |
autoformat | If |
groups_to_headers | Logical. Convert groups to header rows? |
Details
is_hux[table] tests if an object is a huxtable.
Fortable objects,add_colnames andadd_rownames areTRUE by default. Formatrix objects, they areFALSE. Other classes useoptions("huxtable.add_colnames"), which isTRUE by default;add_rownamesisFALSE.
Fordplyr::grouped_df() objects, groups will be converted to header rowsifgroups_to_headers isTRUE.
Value
An object of class "huxtable".
Examples
dfr <- data.frame( a = 1:5, b = letters[1:5], stringsAsFactors = FALSE)as_huxtable(dfr)mx <- matrix(letters[1:12], 4, 3)as_huxtable(mx, add_colnames = FALSE)library(stats)tbl <- table( Wool = warpbreaks$wool, Tension = warpbreaks$tension)as_huxtable(tbl) # adds row and column names by default# adding rownames:as_hux(mtcars[1:3, ], add_colnames = TRUE, add_rownames = "Car")if (requireNamespace("dplyr")) { iris_grp <- dplyr::group_by(iris[c(1:4, 51:54, 101:104), ], Species) as_hux(iris_grp, groups_to_headers = TRUE)}Set cell background color
Description
Colors can be in any format understood by R:
A color name like
"darkred"A HTML string like
"#FF0000"The result of a function like
rgb(1, 0, 0)orgrey(0.5)
Usage
background_color(ht)background_color(ht) <- valueset_background_color(ht, row, col, value)map_background_color(ht, row, col, fn)Arguments
ht | A huxtable. |
value | A character vector or matrix. Set to |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
fn | A mapping function. Seemapping-functions for details. |
Details
Transparent colors are not guaranteed to work at present.
See Also
Other formatting functions:bold(),font(),font_size(),na_string(),number_format(),text_color()
Examples
background_color(jams) <- grey(0.7)background_color(jams)set_background_color(jams, "yellow")set_background_color(jams, 2:3, 1, "yellow")map_background_color(jams, by_rows("yellow", grey(0.7)))Make cell text bold or italic
Description
Make cell text bold or italic
Usage
bold(ht)bold(ht) <- valueset_bold(ht, row, col, value = TRUE)map_bold(ht, row, col, fn)italic(ht)italic(ht) <- valueset_italic(ht, row, col, value = TRUE)map_italic(ht, row, col, fn)Arguments
ht | A huxtable. |
value | A logical vector or matrix. Set to |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
fn | A mapping function. Seemapping-functions for details. |
See Also
Other formatting functions:background_color(),font(),font_size(),na_string(),number_format(),text_color()
Examples
bold(jams) <- TRUEbold(jams)set_bold(jams, FALSE)set_bold( jams, 2:3, 1, FALSE)map_bold( jams, by_rows(FALSE, TRUE))Create a border object
Description
brdr() objects can be passed intoset_top_border() and friends.They set multiple border properties simultaneously.
Usage
brdr(thickness = 0.4, style = "solid", color = NA_character_)Arguments
thickness | Thickness of the border in points. |
style | "solid" (the default), "double", "dashed" or "dotted". |
color | String representing a valid color (either a color name ora hexadecimalstring like "#00FF00"). |
Value
An object of class "brdr".
Examples
set_bottom_border(jams, brdr(1, "solid", "red"))Get thickness of abrdr() object
Description
Get thickness of abrdr() object
Usage
brdr_thickness(x)Arguments
x | A |
Value
A number or numeric matrix.
Examples
brdr_thickness(left_border(jams))brdr_thickness(brdr(1, "solid", "red"))Map cell contents to properties usingcase_when
Description
This function usesdplyr::case_when() to set cell properties.
Usage
by_cases(..., ignore_na = TRUE)Arguments
... | A list of two-sided formulas interpreted by |
ignore_na | If |
Details
Within the formulas, the variable. will refer to the content ofht[rows, cols], after conversion to a vector.
case_when returnsNA when no formula LHS is matched. To avoid this, set adefault in the last formula:TRUE ~ default.
case_when can't deal withbrdr() objects, so you cannot usethese inby_cases().
Value
A function for use inmap_*** functions.
See Also
Other mapping functions:by_colorspace(),by_function(),by_quantiles(),by_ranges(),by_regex(),by_rows(),by_values()
Examples
if (!requireNamespace("dplyr")) { stop("Please install the 'dplyr' package to run this example")}ht <- hux(runif(5), letters[1:5])map_background_color(ht, by_cases( . == "a" ~ "red", . %in% letters ~ "green", . < 0.5 ~ "pink"))Map numeric cell contents smoothly to colors
Description
by_colorspace() can be used to set background, border ortext colors, visually differentiating high or low values.
Usage
by_colorspace( ..., range = NULL, na_color = NA, ignore_na = TRUE, colwise = FALSE)Arguments
... | Colors |
range | Numeric endpoints. If |
na_color | Color to return for |
ignore_na | If |
colwise | Logical. Calculate breaks separately within each column? |
Details
by_colorspace requires the "scales" package.
Value
A function for use inmap_*** functions.
See Also
Other mapping functions:by_cases(),by_function(),by_quantiles(),by_ranges(),by_regex(),by_rows(),by_values()
Examples
if (!requireNamespace("scales")) { stop("Please install the \"scales\" package to run this example")}ht <- as_hux(matrix(rnorm(25), 5, 5))map_background_color( ht, by_colorspace("red", "yellow", "blue"))map_background_color( ht, by_colorspace("red", "yellow", "blue", colwise = TRUE ))Map cell contents to cell properties using a function or scale
Description
This creates a simple wrapper around a function for use inmap_xxx.Useful functions include scales and palettes from thescales package.
Usage
by_function(inner_fn, ignore_na = TRUE)Arguments
inner_fn | A one-argument function which maps cell values to property values. |
ignore_na | If |
Details
The argument ofinner_fn will beas.matrix(ht[row, col]). Be aware how matrix conversionaffects themode of cell data.
Value
A function for use inmap_*** functions.
See Also
Other mapping functions:by_cases(),by_colorspace(),by_quantiles(),by_ranges(),by_regex(),by_rows(),by_values()
Examples
ht <- as_hux(matrix(runif(20), 5, 4))map_background_color( ht, by_function(grey))if (requireNamespace("scales")) { map_text_color(ht, by_function( scales::seq_gradient_pal() ))}Map numeric quantiles to cell properties
Description
These functions split cell values by quantiles. Non-numeric cells are ignored.
Usage
by_quantiles( quantiles, values, right = FALSE, extend = TRUE, ignore_na = TRUE, colwise = FALSE)by_equal_groups(n, values, ignore_na = TRUE, colwise = FALSE)Arguments
quantiles | Vector of quantiles. |
values | Vector of values. |
right | If |
extend | Extend |
ignore_na | If |
colwise | Logical. Calculate breaks separately within each column? |
n | Number of equal-sized groups. |
Details
by_equal_groups(n, values) splits the data inton equal-sized groups (i.e. it is a shortcutforby_quantiles(seq(1/n, 1 - 1/n, 1/n), values)).
Value
A function for use inmap_*** functions.
See Also
Other mapping functions:by_cases(),by_colorspace(),by_function(),by_ranges(),by_regex(),by_rows(),by_values()
Examples
ht <- hux(rnorm(5), rnorm(5))map_background_color( ht, by_quantiles( c(0.2, 0.8), c("red", "yellow", "green") ))map_background_color( ht, by_quantiles( c(0.2, 0.8), c("red", "yellow", "green"), colwise = TRUE ))map_background_color( ht, by_equal_groups( 3, c("red", "yellow", "green") ))Map numeric ranges to cell properties
Description
by_ranges() sets property values for cells falling within different numeric ranges.
Usage
by_ranges(breaks, values, right = FALSE, extend = TRUE, ignore_na = TRUE)Arguments
breaks | A vector of numbers in increasing order. |
values | A vector of property values. |
right | If |
extend | Extend |
ignore_na | If |
Details
Non-numeric cells returnNA. The effects of this depend onignore_na.
Value
A function for use inmap_*** functions.
See Also
Other mapping functions:by_cases(),by_colorspace(),by_function(),by_quantiles(),by_regex(),by_rows(),by_values()
Examples
ht <- huxtable(c(1, 3, 5))map_background_color( ht, by_ranges( c(2, 4), c("red", "yellow", "blue") ))map_background_color( ht, by_ranges( c(2, 4), "pink", extend = FALSE ))map_background_color( ht, by_ranges( c(1, 5), c("red", "yellow", "green"), right = TRUE ))map_background_color( ht, by_ranges( c(1, 5), c("red", "yellow", "green"), right = FALSE ))Map cells matching a string or regex to cell properties
Description
by_regex() sets properties on cells which match aregular expression.
Usage
by_regex(..., .grepl_args = list(), ignore_na = TRUE)Arguments
... | A list of name-value pairs. The names are regular expressions. If there is a singleunnamed argument, this is the default value for unmatched cells. More than one unnamed argumentis an error. |
.grepl_args | A list of arguments to pass to |
ignore_na | If |
Value
A function for use inmap_*** functions.
See Also
Other mapping functions:by_cases(),by_colorspace(),by_function(),by_quantiles(),by_ranges(),by_rows(),by_values()
Examples
ht <- hux(c("The cat sat", "on the", "mat"))map_bold(ht, by_regex("at" = TRUE))map_bold(ht, by_regex("a.*a" = TRUE))map_bold(ht, by_regex( "the" = TRUE, .grepl_args = list( ignore.case = TRUE )))Set cell properties by row or column
Description
by_rows andby_cols set properties in horizontal or vertical "stripes".
Usage
by_rows(..., from = 1, ignore_na = TRUE)by_cols(..., from = 1, ignore_na = TRUE)Arguments
... | One or more cell property values. |
from | Numeric. Row or column to start at. |
ignore_na | If |
Value
A function for use inmap_*** functions.
See Also
Other mapping functions:by_cases(),by_colorspace(),by_function(),by_quantiles(),by_ranges(),by_regex(),by_values()
Examples
ht <- as_hux(matrix(rnorm(25), 5, 5))map_background_color( ht, by_rows("green", "grey"))map_background_color( ht, by_cols("green", "grey"))Map specific cell values to cell properties
Description
Useby_values() to set properties for cells with specific,pre-determined contents.
Usage
by_values(..., ignore_na = TRUE)Arguments
... | Name-value pairs like |
ignore_na | If |
Value
A function for use inmap_*** functions.
See Also
Other mapping functions:by_cases(),by_colorspace(),by_function(),by_quantiles(),by_ranges(),by_regex(),by_rows()
Examples
ht <- hux(letters[1:3])map_background_color( ht, by_values(a = "red", c = "yellow"))map_background_color( ht, by_values(a = "red", c = "yellow", "green"))Set the table caption
Description
By default, captions are displayed above the table. You can change thiswithcaption_pos().
Usage
caption(ht)caption(ht) <- valueset_caption(ht, value)Arguments
ht | A huxtable. |
value | A string. Set to |
Details
Captions are not escaped. See the example for a workaround.
Value
property() returns the property value(s).set_property() andmap_property() return the modified huxtable.
See Also
Other caption properties:caption_pos(),caption_width()
Examples
set_caption(jams, "Pots of jam for sale")# escape caption characters:caption(jams) <- sanitize( "Make $$$ with jam", type = "latex")Position the table's caption
Description
Ifcaption_pos is "top" or "bottom", then the horizontal position ("left","center" or "right") will be determined by the huxtable"sposition().
Usage
caption_pos(ht)caption_pos(ht) <- valueset_caption_pos(ht, value)Arguments
ht | A huxtable. |
value | String: "top", "bottom", "topleft", "topcenter", "topright", "bottomleft", "bottomcenter" or "bottomright". Set to |
Value
property() returns the property value(s).set_property() andmap_property() return the modified huxtable.
See Also
Other caption properties:caption(),caption_width()
Examples
caption(jams) <- "Jam for sale"jamsset_caption_pos(jams, "bottom")Set the width of the table caption
Description
A numeric widths is interpreted as a proportion of text width in LaTeX, or ofwidth of the containing element in HTML. A character width must be a validLaTeX or CSS dimension. The default,NA, makes the caption the same widthas the table.
Usage
caption_width(ht)caption_width(ht) <- valueset_caption_width(ht, value)Arguments
ht | A huxtable. |
value | Number or string. Set to |
Value
property() returns the property value(s).set_property() andmap_property() return the modified huxtable.
See Also
Other caption properties:caption(),caption_pos()
Examples
set_caption_width(jams, 0.5)Combine rows or columns
Description
These methods are called when one argument tocbind/rbind is ahuxtable. As well as combining cell contents, they copy table, row,column and/or cell properties into the returned result.
Usage
## S3 method for class 'huxtable'cbind(..., deparse.level = 1, copy_cell_props = TRUE)## S3 method for class 'huxtable'rbind(..., deparse.level = 1, copy_cell_props = TRUE)Arguments
... | Vectors, matrices, or huxtables. |
deparse.level | Unused. |
copy_cell_props | Cell properties to copy from neighbours (see below). |
Details
Table properties will be taken from the first argument which is a huxtable. So willrow properties (for cbind) and column properties (for rbind).
If some of the inputs are not huxtables, andcopy_cell_props isTRUE,then cell properties will be copied to non-huxtables. Objects on the leftor above get priority over those on the right or below.
Ifcopy_cell_props isFALSE, cells from non-huxtable objects will get the default properties.
You cannot bind huxtables with data frames, since the R method dispatch will alwayscall the data frame method instead of the huxtable-specific code. For a solution, seeadd_columns().
Value
A huxtable.
Examples
sugar <- c("Sugar", "40%", "35%", "50%")jams <- set_bold(jams, 1, everywhere)cbind(jams, sugar)cbind(jams, sugar, copy_cell_props = FALSE)jams <- set_text_color( jams, everywhere, 1, "red")rbind(jams, c("Damson", 2.30))rbind(jams, c("Damson", 2.30), copy_cell_props = FALSE)Set the width of table columns
Description
Numeric column widths are treated as proportions of the table width.Character widths must be valid CSS or LaTeX dimensions.
Usage
col_width(ht)col_width(ht) <- valueset_col_width(ht, col, value)Arguments
ht | A huxtable. |
value | Numeric or character vector. Set to |
col | A column specifier. Seerowspecs for details. |
Details
In LaTeX, if you specify a column width, but setwrap toFALSE and havecells which overrun, then you may have problems with table position and withbackground colours in other cells. The workaround is to adjust the width, sothat your cells no longer overrun.
Value
col_width() returns thecol_width property.set_col_width() returns the modified huxtable.
See Also
Other table measurements:height(),row_height(),width()
Examples
col_width(jams) <- c(.2, .8)col_width(jams)jams$Notes <- c( "Notes", "This year's finest", "", "")jamsset_col_width(jams, c(.4, .5, .1))Convert a column to header rows
Description
Convert a column to header rows
Usage
column_to_header( ht, col, ..., glue = "{value}", start_col = 1, ignore_headers = TRUE, set_headers = TRUE)Arguments
ht | A huxtable. |
col | A column specifier for a single column. |
... | Properties to set on new rows |
glue | Glue string. |
start_col | Integer. New header text will start at this column. |
ignore_headers | Logical. Ignore existing headers? |
set_headers | Logical. Set new rows as headers? |
Examples
column_to_header(jams, "Type")column_to_header(jams, "Type", text_color = "red")column_to_header(jams, "Price", number_format = 2, italic = TRUE, glue = "Price: {value}")iris_hux <- as_hux(iris[c(1:4, 51:54, 101:104), ])column_to_header(iris_hux, "Species", markdown = TRUE, glue = "Species: **{value}**")Description of color format
Description
Colors can be in any format understood by R:
A color name like
"darkred"A HTML string like
"#FF0000"The result of a function like
rgb(1, 0, 0)orgrey(0.5)
Escape or unescape text in cells
Description
Settingescape_contents toFALSE allows you to include raw HTML orTeX code in your cells.
Usage
escape_contents(ht)escape_contents(ht) <- valueset_escape_contents(ht, row, col, value)map_escape_contents(ht, row, col, fn)Arguments
ht | A huxtable. |
value | A logical vector or matrix. Set to |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
fn | A mapping function. Seemapping-functions for details. |
Details
Ifmarkdown() isTRUE for a cell, theescape_contents propertywill be ignored.
See Also
sanitize() for escaping text manually.
Examples
ht <- huxtable( Text = "x squared", Maths = "$x^2$")ht <- set_escape_contents(ht, FALSE)## Not run: quick_pdf(ht)## End(Not run)Return the last n rows or columns
Description
This is a convenience function to use in row and column specifications. In that context, itreturns the last n row or column numbers of the huxtable.
Usage
final(n = 1)Arguments
n | Number of rows to return. |
Details
Technically,final returns a two-argument function - seerowspecs for more details.
Examples
set_bold(jams, final(2), final(1), TRUE)Description forfmt_ functions
Description
fmt_ functions are designed to work withnumber_format().
Value
An object you can pass intonumber_format().
Format numbers as percent
Description
fmt_ functions are designed to work withnumber_format().
Usage
fmt_percent(digits = 1, format = "f", ...)Arguments
digits | How many digits to print. |
format,... | Passed into |
Value
An object you can pass intonumber_format().
See Also
Other format functions:fmt_pretty()
Examples
jams$Sugar <- c( "Sugar content", 0.4, 0.35, 0.45)set_number_format( jams, -1, "Sugar", fmt_percent(1))UseprettyNum() to format numbers
Description
UseprettyNum() to format numbers
Usage
fmt_pretty(big.mark = ",", ..., scientific = FALSE)Arguments
big.mark,scientific,... | Passed to |
Value
An object you can pass intonumber_format().
See Also
Other format functions:fmt_percent()
Examples
jams$Sales <- c( "Sales", 35000, 55500, 20000)set_number_format( jams, -1, "Sales", fmt_pretty())Set the font for cell text
Description
Set the font for cell text
Usage
font(ht)font(ht) <- valueset_font(ht, row, col, value)map_font(ht, row, col, fn)Arguments
ht | A huxtable. |
value | A character vector or matrix. Set to |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
fn | A mapping function. Seemapping-functions for details. |
Details
To find out what fonts are on your system,systemfonts::match_font()is useful.
For HTML, you can use comma-separated lists of font names like"Times New Roman, Times, Serif". This is not portable, though.
LaTeX and HTML use different font names. To use the same fontnames across document formats, seeoptions("huxtable.latex_use_fontspec")inhuxtable-options.
See Also
Other formatting functions:background_color(),bold(),font_size(),na_string(),number_format(),text_color()
Examples
font(jams) <- "times"font(jams)set_font(jams, "arial")set_font(jams, 2:3, 1, "arial")map_font(jams, by_rows("arial", "times"))Make text larger or smaller
Description
Font size is in points.
Usage
font_size(ht)font_size(ht) <- valueset_font_size(ht, row, col, value)map_font_size(ht, row, col, fn)Arguments
ht | A huxtable. |
value | A numeric vector. Set to |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
fn | A mapping function. Seemapping-functions for details. |
See Also
Other formatting functions:background_color(),bold(),font(),na_string(),number_format(),text_color()
Examples
font_size(jams) <- 14font_size(jams)jams2 <- set_font_size( jams, 12)font_size(jams2)jams3 <- set_font_size( jams, 2:3, 1, 12)font_size(jams3)jams4 <- map_font_size( jams, by_rows( 12, 14 ))font_size(jams4)Guess knitr output format
Description
Convenience function which tries to guess the ultimate output from knitr and rmarkdown.
Usage
guess_knitr_output_format()Value
"html", "latex", "typst", or something else. If we are not in a knitr document,returns an empty string.
Examples
## Not run: # in a knitr documentguess_knitr_output_format()## End(Not run)Mark rows or columns as headers
Description
Arbitrary rows and columns can be headers: they do not have to be at the topor left of the table.
Usage
header_cols(ht)header_cols(ht) <- valueset_header_cols(ht, col, value)header_rows(ht)header_rows(ht) <- valueset_header_rows(ht, row, value)Arguments
ht | A huxtable. |
value | Logical vector. Set to |
col | A column specifier. Seerowspecs for details. |
row | A row specifier. Seerowspecs for details. |
Details
By default header rows and columns are not shown differently from other rows, butyou can change this withstyle_headers().Various themes may set properties on headers. Lastly, headers are treateddifferently whenrestacking.
Examples
jams <- set_header_rows(jams, 1, TRUE)jams <- set_header_cols(jams, 1, TRUE)style_headers(jams, bold = TRUE, text_color = "purple")Set the table height
Description
height() sets the height of the entire table, whilerow_height() sets theheight of individual rows. A numeric height is treated as a proportion ofthe containing block (HTML) or\textheight (LaTeX). A character heightmust be a valid CSS or LaTeX dimension.
Usage
height(ht)height(ht) <- valueset_height(ht, value)Arguments
ht | A huxtable. |
value | A number or string. Set to |
Value
property() returns the property value(s).set_property() andmap_property() return the modified huxtable.
See Also
Other table measurements:col_width(),row_height(),width()
Examples
set_height(jams, 0.4)Huxtable logo
Description
Returns a randomized huxtable logo, inspired by Mondrian.
Usage
hux_logo(compact = FALSE, latex = NULL)Arguments
compact | Logical. Create a compact 1-row huxtable (default is 2 rows)? |
latex | Logical. Output for LaTeX? |
Value
A huxtable.
Examples
# Default logoprint_screen(hux_logo())# Compact single-row versionprint_screen(hux_logo(compact = TRUE))Shared documentation for huxtable property functions:
Description
Shared documentation for huxtable property functions:
Arguments
ht | A huxtable. |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
fn | A mapping function. Seemapping-functions for details. |
Value
property() returns the property value(s).set_property() andmap_property() return the modified huxtable.
Create a huxtable to display model output
Description
Create a huxtable to display model output
Usage
huxreg( ..., error_format = "({std.error})", error_pos = c("below", "same", "right"), number_format = "%.3f", align = ".", ci_level = NULL, tidy_args = NULL, glance_args = NULL, stars = c(`***` = 0.001, `**` = 0.01, `*` = 0.05), bold_signif = NULL, borders = 0.4, outer_borders = 0.8, note = if (is.null(stars)) NULL else "{stars}.", statistics = c(N = "nobs", R2 = "r.squared", "logLik", "AIC"), coefs = NULL, omit_coefs = NULL)Arguments
... | Models, or a single list of models. Names will be used as columnheadings. |
error_format | How to display uncertainty in estimates. See below. |
error_pos | Display uncertainty "below", to the "right" of, or in the"same" cell as estimates. |
number_format | Format for numbering. See |
align | Alignment for table cells. Set to a single character to align onthis character. |
ci_level | Confidence level for intervals. Set to |
tidy_args | List of arguments to pass to |
glance_args | List of arguments to pass to |
stars | Levels for p value stars. Names of |
bold_signif | Where p values are below this number, cells will bedisplayed in bold. Use |
borders | Thickness of inner horizontal borders. Set to 0 for no borders. |
outer_borders | Thickness of outer (top and bottom) horizontal borders.Set to 0 for no borders. |
note | Footnote for bottom cell, which spans all columns. |
statistics | A vector of summary statistics to display. Set to |
coefs | A vector of coefficients to display. Overrules |
omit_coefs | Omit these coefficients. |
Details
Models must have agenerics::tidy() method defined, which should return "term", "estimate","std.error", "statistic" and "p.value". The"broom" package provides methods for many modelobjects. If thetidy method does not have aconf.int option,huxreg will calculate confidence intervals itself, using a normal approximation.
If... has names or contains a single named list, the names will be used for column headings.Otherwise column headings will be automatically created.
If thecoef and/orstatistics vectors have names, these will be used for row headings. Ifdifferent values ofcoef have the same name, the corresponding rows will be merged in theoutput.
statistics should be column names fromgenerics::glance(). You can also use"nobs" for thenumber of observations. Ifstatistics isNULL then all columns fromglance will be used. Touse no columns, setstatistics = character(0).
error_format is a string to be interpreted byglue::glue(). Terms in parentheses will bereplaced by computed values. You can use any columns returnedbytidy: typical columns includestatistic,p.value,std.error, as well asconf.lowandconf.high if you have setci_level. For example, to show confidence intervals, youcould writeerror_format = "{conf.low} to {conf.high}".
Value
A huxtable object.
Fixing p values manually
If you wish to use e.g. robust standard errors, you can pass results from e.g.lmtest::coeftest() intohuxreg, since these objects havetidy methods.Alternatively, to manually insert your own statistics, seetidy_override().
Examples
if (!requireNamespace("broom")) { stop("Please install 'broom' to run this example.")}lm1 <- lm(mpg ~ cyl, mtcars)lm2 <- lm(mpg ~ cyl + hp, mtcars)glm1 <- glm(I(mpg > 20) ~ cyl, mtcars, family = binomial)huxreg(lm1, lm2, glm1)if (requireNamespace("sandwich") && requireNamespace("lmtest")) { lm_robust <- lmtest::coeftest(lm1, vcov = sandwich::vcovHC ) # coeftest() has no "glance" method: huxreg(lm_robust, statistics = character(0) )}Create a huxtable
Description
huxtable, orhux, creates a huxtable object.
Usage
huxtable( ..., add_colnames = getOption("huxtable.add_colnames", TRUE), add_rownames = FALSE, autoformat = getOption("huxtable.autoformat", TRUE))hux( ..., add_colnames = getOption("huxtable.add_colnames", TRUE), add_rownames = FALSE, autoformat = getOption("huxtable.autoformat", TRUE))tribble_hux( ..., add_colnames = getOption("huxtable.add_colnames", TRUE), autoformat = getOption("huxtable.autoformat", TRUE))Arguments
... | For |
add_colnames | If |
add_rownames | If |
autoformat | If |
Details
If you useadd_colnames oradd_rownames, be aware that these will shift your rows and columnsalong by one: your old row/column 1 will now be row/column 2, etc.
add_colnames defaults toTRUE. You can set the default globally bysettingoptions("huxtable.add_colnames") toTRUE orFALSE.
tribble_hux is a simple wrapper aroundtibble::tribble() which lets youcreate data in a readable format. It requires the "tibble" package tobe installed.
Value
An object of classhuxtable.
Automatic formatting
Ifautoformat isTRUE, then columns will havenumber_format() andalign() propertiesset automatically, as follows:
Integer columns will have
number_formatset to 0.Other numeric columns will have
number_formatset to"%.3g".All other columns will have
number_formatset toNA(no formatting).Integer,
Dateand date-time (i.e.POSIXctandPOSIXlt) columns will be right-aligned.Other numeric columns will be aligned on
options("OutDec"), usually".".Other columns will be left aligned.
You can change these defaults by editingoptions("huxtable.autoformat_number_format") andoptions("huxtable.autoformat_align"). Seehuxtable-package for more details.
Automatic alignment also applies to column headers ifadd_colnames isTRUE; headers ofcolumns aligned on a decimal point will be right-aligned. Automatic number formatting does notapply to column headers.
See Also
Examples
ht <- huxtable( column1 = 1:5, column2 = letters[1:5])httribble_hux( ~Name, ~Salary, "John Smith", 50000, "Jane Doe", 50000, "David Hugh-Jones", 50000, add_colnames = TRUE)Frequently Asked Questions, including how to get help
Description
A FAQ of common issues.
Details
I get a LaTeX error when I try to compile my document!
Have you installed the LaTeX packages you need? LaTeX packages are differentfrom R packages. Run
check_latex_dependencies()to find out if you aremissing any. Then install them using your system's LaTeX managementapplication. Or you can tryinstall_latex_dependencies().In some rmarkdown and LaTeX formats, you also need to add LaTeX dependenciesmanually. Run
report_latex_dependencies()and addthe output to your LaTeX preamble, or in Rmarkdown formats, add it to thermarkdown header like this:header-includes: - \usepackage{array} - \usepackage{caption} ... et ceteraHuxtable isn't working in my Rmarkdown
beamer_presentationslides.You may need to set the beamer "fragile" option, like this:
# Slide title {.fragile}Numbers in my cells look weird!
You can change numeric formatting using
number_format(). Base R optionslikescipenusually have no effect.How can I use HTML, TeX etc. in my table?
jams |> add_footnote("These jams are <i>tasty</i>!") |> set_escape_contents(final(1), everywhere, FALSE) |> quick_html()Alternatively you might consider using markdown in cells, with
set_markdown_contents().I ran
caption(ht) <- "Something"and got an error message:Error in UseMethod("caption<-") :no applicable method for 'caption<-' applied to an object of class "c('huxtable', 'data.frame')"You may have loaded another package with a
captionmethod, e.g. "xtable".Try loading huxtable after xtable.How can I get line breaks in my cells?
Just insert a line break
"\n"in the cell contents. Then make sure thatwidth()is set andwrap()isTRUE(it is by default).How can I change the font size, font etc. of captions?
There are no direct commands for this. You have to use raw HTML/TeX/othercommands within the caption itself. For example to have a bold caption inHTML, you might do something like:
set_caption(jams, "<b>Jam Prices</b>")
How do I refer to tables in bookdown?
As of version 4.3.0, this is handled automatically for you. Justset the label using
label(), then in markdown text do e.g.:\@ref(tab:my-table-label).
How do I refer to tables in quarto?
In quarto versions up to 1.3, or when compiling to HTML andother formats, simply use quarto cell labelslike
label: tbl-fooand refer to them via@tbl-foo.In quarto versions 1.4 and above, when compiling to PDF,quarto cross-referencing no longer works.Instead, set labels within huxtable using
label()orset_label()and refer to them with TeX-only referencing using\ref{label}. You must also set a caption.Here's an example:
A reference to Table \ref{tbl-jams}.```{r}label(jams) <- "tbl-jams"caption(jams) <- "Some jams"jams```
If you really need cross-referencing for both PDF and other outputformats, either downgrade to quarto 1.3, use a different package,or write code to emit appropriate references.
I called
library(huxtable)and now mydata.tableobjects are gettingprinted!Set
options(huxtable.knit_print_df = FALSE).How can I set a property on an arbitrary group of cells?
If you can't use themapping-functions interface, and you want toset a property for multiple cells that aren't all in the same rowsand/or columns, you could use a little-known fact about R subsetting.If you subset
ht[x]wherexis two-column numeric matrix, theneach row ofxindexes a single(row, column)cell. So, for example,here's how to set the background color of cells(2,1),(1, 3)and(4, 2)of a huxtable:indices <- matrix(c(2, 1, 1, 3, 4, 2), ncol = 2, byrow = TRUE)background_color(jams)[indices] <- "orange"
Another useful trick sets properties on the diagonal, using
diag():diag(background_color(jams)) <- "grey"
I have another problem.
If you have a bug - i.e. there is something wrong with the software -or a feature request, please report it tohttps://github.com/hughjonesd/huxtable/issues.Otherwise, ask a question onStackOverflow orhttps://forum.posit.co. That way, other people will benefit fromthe answers you get.
Can I email you directly?
I'd rather you asked on a public website. If you then email me a link, Imay be able to help.
Author(s)
Maintainer: David Hugh-Jonesdavidhughjones@gmail.com
See Also
Useful links:
Changes to the huxtable package
Description
This help page simply gives the contents of NEWS.md.
huxtable 5.8.0
Other changes
Redesigned
hux_logo()function to spell out “huxtable” withcustomizable layout, fonts, and colors. Addedcompactandlatexparameters for different output formats.Workaround for a bug in stringr 1.6.0.
huxtable 5.7.0
Breaking changes
Functions are no longer generic, so you can’t subclass a huxtableobject. AFAIK nobody has ever done this; if I’m wrong, please tell me.
Reworked internals, with the help of OpenAI Codex.
Other changes
HTML tables now wrap header rows in
<thead>(using<th>cells) andbody rows in<tbody>when header rows are at the top of the table.Added Typst export via
to_typst()andprint_typst(). Quartointegration is available as well asquick_typst(),quick_typst_pdf(),quick_typst_png(), andquick_typst_svg()functions.HTML output now uses CSS classes with a shared
<style>block insteadof long inline styles.Added
as_html()for obtaining table ashtmltoolstags.to_screen()now displays double, dashed and dotted border styles.
huxtable 5.6.0
Breaking changes
Removed underscore dplyr verbs (
slice_,select_etc.) These havelong been deprecated in dplyr itself.
Other changes
Bugfix: add newline at end of report_latex_dependencies() output.Thanks @ceresek.
You can now add multiple huxtables to the same Excel worksheet in
as_Workbook(). Suggestion by @oobd.
huxtable 5.5.7
Bugfix: fix quarto referencing in quarto 1.5
Bugfix: integer overflow on very large huxtables. Thanks @kpagacz.
huxtable 5.5.6
Bugfix: quarto cross-referencing was giving too many warnings.
huxtable 5.5.5
Bugfix: quarto cross-referencing doesn’t work for PDF with quartoversion 1.4. See
?huxtable-FAQfor workarounds.Bugfix:
by_cases()wasn’t picking up variables from the callerenvironment.huxtable 5.5.4 was never released due to failing a reverse dependencycheck.
huxtable 5.5.3
Bugfix: disable quarto styling on HTML tables. You can reenable quartoprocessing with
options(huxtable.quarto_process = TRUE).Bugfix: borders weren’t working with merged cells in Word documents.
huxtable 5.5.2
Update
by_cases()to work with dplyr 1.1.0. Withinby_cases()formulas,.is now vector rather than matrix when dplyr version1.1.0 is detected. Thanks @DavisVaughan.Add package checks in
quick_*functions. Thanks @reuning.
huxtable 5.5.1
CSS borders are now set explicitly even if they are all set to 0.
Bugfix: shell-quote files in
quick_*functions. Thanks to @ceresek.Bugfix: cope with adjustbox version “1.3a” among latex dependencies.
huxtable 5.5.0
Huxtable should work withQuarto documents.
Quarto labels and captions will override huxtable-provided ones.
Quarto style references like
@table-labelonly work with quartolabels.Please report any bugs!
New
column_to_header()function converts a column to header rows.Newas_hux()method forgrouped_dfobjects optionally convertsgroups to header rows.New convenience functions
stripe_rows()andstripe_columns().Add
formatand...options tofmt_percent()to allow flexibleformatting viaformatC().add_footnote()gets an explicitnumber_formatargument which isNAby default.Bugfix: infinite loop with wide characters in
to_screen().Bugfix: duplicate colnames when exporting
huxreg(..., error_pos = "right")to flextable.Bugfix: bookdown-style references weren’t working in blogdown.
huxtable 5.4.0
New behaviour: setting
colspan()orrowspan()overwrites thecontent of cells that have been shadowed.ht <- hux(c(1, 1), c(2, 2), c(3, 3))ht <- set_all_borders(ht)colspan(ht)[1, 1] <- 3# old behaviour ht[, c(2, 1, 3)]## +--------------------------+## | 2 |## +--------+--------+--------+## | 2 | 1 | 3 |## +--------+--------+--------+# new behaviourht[, c(2, 1, 3)]## +--------------------------+## | 1 |## +--------+--------+--------+## | 2 | 1 | 3 |## +--------+--------+--------+
New option
huxtable.latex_siunitx_alignallows you to use the LaTeXsiunitxpackage to handle decimal point alignment. This isFALSEby default.Bugfix: centre alignment was not working in
print_screen().Bugfix: failure in
to_md()with recent versions ofstringipackage.Bugfix: repeating a single row in a subset, like
ht[c(1, 1, 2, 3), ], was settingcolspan = 2on the repeated row.Bugfix: zero-argument subset replacement like
ht[] <- ...wasn’tworking.
huxtable 5.3.0
Improve decimal alignment in LaTeX when
align(ht) == ".". This maychange the appearance of some documents.Allow
tidy_override()to extend columns oftidyandglance.Bugfix: #196
^was giving errors in LaTeX.
huxtable 5.2.0
Add
table_environmentproperty so you can use e.g."table*"inTeX.Bugfix:
print_screen(h, colnames = FALSE)didn’t print a finalnewline.Bugfix: italic from markdown was being printed as underlined in TeX.
Minor test update for compatibility with broom.
huxtable 5.1.1
Minor test update for compatibility with broom.
Fixes for R 4.1.0.
huxtable 5.1.0
as_flextable()now exports markdown in cells to RTF, and to Wordwith the help of the optionalftExtrapackage. Thanks @atusy foradding this feature.Improvements to markdown screen export. This now uses the optional
fansipackage.New feature:
as_Workbook()gainsstart_rowandstart_colarguments, to write a huxtable into an Excel worksheet starting at aparticular row or column.New feature:
huxreg()gains aglance_argsargument to passarguments toglance().New feature:
options(huxtable.long_minus = TRUE)will try to uselong minus signs before numbers. The default isFALSE. It willprobably becomeTRUEin a future version.Bugfix:
insert_row/column(..., after = 0)was unsetting tableproperties.Bugfix: unicode characters above 32767 were incorrectly represented inRTF. Thanks @kaigu1990.
Bugfix: columns were being collapsed in
as_Workbook().Bugfix:
style_cellsdidn’t work unless huxtable was on the searchpath.Bugfix:
merge_repeated_rowsmergedNArows incorrectly.Bugfix: number format was not set correctly in
huxreg()’snote.Bugfix: in
huxreg(),tidy_argsthrew an error if the firstargument totidy()was a named list.Bugfix:
tidy_replace()was broken.Clearer error messages for
tidy_override()whenextend = FALSE. Infuture,extendwill probably default toTRUE.
Other news:
Huxtable received its first Patreon sponsor! Thanks to Ross Mattheis.
huxtable 5.0.0
Huxtable 5.0.0 brings numerous changes. For a more user-friendlyintroduction, seehttps://hughjonesd.github.io/whats-new-in-huxtable-5.0.0.html.
Breaking changes
There are changes to LaTeX output.
LaTeX
\tabcolsepis now set to 0 within huxtable tables, whileleft and right padding should now take effect even whenwrapisFALSE.The default LaTeX table environment is now “tabular” unless
widthis set. Ifwidthis set, it is “tabularx”.wraponly matters ifwidthis set. Otherwise, cell wrapping isoff.the
\centerboxmacro from the LaTeX “adjustbox” package is used tocentre tables. This should improve centring when tables are toowide. You may need to update the LaTeX “adjustbox” package to arecent version.check_latex_dependencies()can inform you aboutthis.
As previously signalled,
add_colnameshas now becomeTRUEbydefault inhuxtable()andas_huxtable(). Setoptions(huxtable.add_colnames = FALSE)to go back to the oldbehaviour.Newlines in cell contents are now respected (in LaTeX, so long as
wrap = TRUEandwidthhas been set).Huxtable borders have been reworked, fixing some longstanding bugs andadding new features.
Borders are now automatically collapsed. For example:
jams %>% set_right_border(everywhere, 1, 1) %>% set_left_border(everywhere, 2, 0.4)
will set the border in between the columns of
jamsto0.4,overwriting the previous value. This is more in line with what youwould expect. For example, the following code now does what youprobably want:jams %>% set_rowspan(2, 1, 3) %>% set_bottom_border(4, everywhere, 1)## Type Price ## Strawberry 1.90 ## 2.10 ## 1.80 ## ---------------------------
instead of the old behaviour:
jams %>% set_rowspan(2, 1, 3) %>% set_bottom_border(4, everywhere, 1)## Type Price ## Strawberry 1.90 ## 2.10 ## 1.80 ## -----------
set_left_border(),set_all_borders()and friends all use adefault value of 0.4. So to set a default border, write e.g.as_hux(head(iris)) %>% set_bottom_border(1, everywhere)
A new
brdr()class encapsulates border thickness, style andcolour. You can set all properties at once by writing, e.g.:as_hux(jams) %>% set_bottom_border(1, everywhere, brdr(1, "dotted", "darkgreen"))
left_border(ht)and friends return abrdrobject. To access theborder thickness, writebrdr_thickness(left_border(ht)).
Various deprecated items have been removed:
The 3-argument form of
set_*. Instead, usemap_*.The
byrowargument toset_*. Instead, usemap_*andby_cols().error_styleandpad_decimalarguments inhuxreg. Useerror_formatandalign(hx) <- ".".The
where(),is_a_number()andpad_decimal()functions. Usemap_*functions,! is.na(as.numeric(x)), andalign(ht) <- ".".
Default padding has been increased to 6 points.
By default,
width()is now unset.By default,
wrap()is nowTRUE.every()has been renamed tostripe(), to avoid a clash withpurrr::every().everywhere,evensandoddsare still the same.The little-used ability to set
copy_cell_propsto a character vectorinrbind.huxtableandcbind.huxtablehas been removed. You canstill set it toFALSE.add_rows()andadd_columns()now always callrbind.huxtable()orcbind.huxtable()and return a huxtable.Huxtable no longer supports dplyr versions less than 0.7.0 (releasedmid-2017).
set_cell_properties()has been renamedstyle_cells(). It isretained as a soft-deprecated alias.Various themes have been tweaked:
theme_basic()now has bold headers and no header column bydefault.theme_plain()defaults toposition = "centre".theme_striped()uses grey stripes, a white border, and subtlerheaders.theme_article()has thinner borders.
Other changes
You can now usemarkdown within tablecells.
Use
set_markdown(ht, rows, cols)to turn this on.Or use the convenience function
set_markdown_contents()to setcell contents that will be interpreted as markdown.Markdown works for HTML and LaTeX. There’s basic support foron-screen display.
Huxtable now has the concept of header row and columns.
By default, data frame column names will be headers.
To set other rows to be headers, use
set_header_rows(ht, row_numbers, TRUE). For columns, useheader_cols()orset_header_cols().New functions
style_headers(),style_header_cols(), andstyle_header_rows()to set multiple properties on headers.In themes,
header_row/col = TRUEset the first row/col to aheader, and style all header rows/cols.
set_bold()andset_italic()now use a default value ofTRUE. Soyou can write e.g.as_hux(head(iris)) %>% set_bold(1, everywhere)
Console output in R now shows table position and caption position.
By default, huxtable now sets labels from the current knitr chunklabel, if there is one. This is consistent with
kable(). Inbookdown, you can then do e.g.Some iris species are shown in \@ref(tab:mytable):```ras_hux(iris)```
Set
options(huxtable.autolabel = FALSE)to turn off this behaviour.The one-argument form of
[now works for huxtables just as it doesfor data frames. For example,ht[2:3]selects columns 2 and 3.New functions
fmt_percent()andfmt_pretty()for passing intonumber_format():jams$Sugar <-c ("Sugar content", 0.4, 0.35, 0.45)set_number_format(jams, -1, "Sugar", fmt_percent(1))split_across()andsplit_down()split a huxtable into a list ofsub-tables. Headers can be automatically included.restack_across()andrestack_down()split a huxtable, then join itback up. This is useful for making a table fit on a page.merge_across()andmerge_down()merge an area of cellshorizontally across rows, or vertically down columns.New functions
set_lr_borders()/_border_colors()/_border_styles()/_padding()set left and right borders and padding simultaneously. New functionsset_tb_borders()etc. set top and bottom properties simultaneously.There aremap_equivalents of all of these.set_outer_padding()sets padding around a range of cells, similarlytoset_outer_borders().A new table-level property,
caption_width(), allows you to set thewidth of the caption. The default,NA, sets the width equal to thetable width.There are two new themes:
theme_compact()andtheme_bright().For
huxreg(), a new functiontidy_replace()allows you to replacethe output oftidy(x)entirely.huxtable now only sets
options(huxtable.knit_print_df = TRUE)if itis attached, not if it is loaded.huxtable supports
dplyr::relocate(), new in dplyr 1.0.0.Improvements to
as_flextable().Improvements to
quick_pptx()(thanks @davidgohel).Bugfixes for
options(huxtable.use_fontspec = TRUE).Bugfix:
add_rownames = "string"now works as promised.Bugfix: non-ASCII characters are now supported in RTF.
Other news
New versions of thegtsummary package willhave an
as_huxtable()method.Packagetexreg on CRANincludes a
huxtablereg()function for creating a table of regressionoutputs.
huxtable 4.7.1
Theexpss package now supportsexport to huxtables.
by_quantiles(),by_equal_groups()andby_colorspace()havegained acolwiseargument, which calculates quantiles or colorsseparately for each column.Add caption support for
as_flextable()(thanks @sjewo).
huxtable 4.7.0
Better error messages.
New
merge_repeated_rows()function: merge repeated rows into asingle cell.New
fillandcolspan/rowspanarguments forinsert_row()/insert_column():insert_row(ht, "blah", "", "", "", "", ...)can be writteninsert_row(ht, "blah", fill = "").colspan/rowspansetcolspan/rowspanof the first cell in theinserted row/column.
huxtable 4.6.1
Bugfix: right borders in wrong place when cells were merged.
Bugfix: chinese characters were displaying wrongly in
to_screen().
huxtable 4.6.0
Set
options('huxtable.latex_use_fontspec')toTRUEto use portablefont names in TeX documents, with the LaTeX “fontspec” package.Bugfix: attributes were being copied wrongly in subset assignment ofhuxtables.
Bugfix: text colors in
hux_logo().Bugfix: rbind of huxtable and matrix wasn’t setting
row_heightcorrectly.
huxtable 4.5.0
Add
quick_latex()function.The
texregpackage now includes ahuxtableregfunction, analogoustohuxreg, which outputs a huxtable from a list of regressions. Thiswill be available from the next version oftexreg.
huxtable 4.4.0
Huxtables can now be printed directly in Word documents and Powerpointpresentations, thanks to the
flextablepackage and recent versionsof Pandoc. (Powerpoint printing requires Pandoc >= 2.4.0.)New “wrapleft” and “wrapright” options to
position()allow textwrapping around tables.New
set_outer_border_colors()andset_outer_border_styles()functions, likeset_outer_borders().Huxtable no longer requires the
broompackage, instead using thegenericspackage. If you usehuxreg(), you will still neede.g.broomorbroom.mixedto providetidy()andglance()methods for specific models.Bugfix:
tidy.tidy_override()andglance.tidy_override()shouldwork even if underlying object has notidy()orglance()method.Bugfix: huxtables had option clash when
echo = TRUEin Rmdpdf_document format.Bugfix:
caption()andheight()weren’t playing nicely.Bugfix:
mutate(..., copy_cell_props = FALSE)was adding a columnnamedcopy_cell_props.Bugfix:
check_latex_dependenciesandinstall_latex_dependenciesgave misleading errors.Enhancement: when
starsisNULLinhuxreg, don’t print a note bydefault.Enhancement: use
tinytexwhen available, allowing autoinstallationof latex packages.
huxtable 4.3.0
More work on TeX. Tablesshould now compile when raw_attributes isnot set.
New
map_xxxfunctions to set properties variably by cell values.Functions for mapping properties variably:
by_rows,by_values,by_ranges,by_quantilesetc.Correct bookdown labels are now automatically created.
New grey, blue, green and orange themes.
New “themes” vignette.
New
tidy_overridefunction to override p values etc. inhuxreg.New
set_contentsfunction to change huxtable contents within dplyrpipes.Enhancement: left- and right-aligned captions are now set above thetable in LaTeX, using the “threeparttable” package. You will need toinstall this using e.g.
install_latex_dependencies()ortlmgrifit is not already on your system.Enhancement: in
huxtable()and friends,add_rownames = "Colname"now sets the name for the new column.Improvements to the vignettes and help files.
Bugfix: to_md could hang with bold/italic cells.
Deprecated
The 3 argument form of
set_xxxfunctions is deprecated, as is thewherefunction. Usemap_xxxinstead.Argument
byrowis soft-deprecated. Useby_cols()instead.
huxtable 4.2.1
Bugfix:
wrap=TRUEcaused squeezed text in RTF.
Important
TeX code was getting escaped by pandoc. To avoid this, if possible,huxtable now adds fenced code blocks round latex tables (seehttps://pandoc.org/MANUAL.html#extension-raw_attribute). You mustadd
md_extensions: +raw_attribute
to your YAML header for this to work, and you will need a recent (>2.0.0) version of Pandoc.
huxtable 4.2.0
More speedups: LaTeX 2-3x faster, as_Workbook 2-3x faster.
Simplify LaTeX output using our own LaTeX commands.
RTF support: new
print_rtf,to_rtfandquick_rtffunctions.New
border_styleproperties to set “solid”, “double”, “dotted” or“dashed” borders. (At present, LaTeX only allows “solid” or “double”.)New
merge_cellsfunction, an alternative interface tocolspanandrowspan.New
quick_pptxfunction to print data frames and huxtables intoPowerpoint.New
install_latex_dependenciesandcheck_latex_dependenciesutility functions.add_rowsandadd_columnsnow accept data frames as arguments.New
theme_mondriantheme :-DEnhancement:
print_mdnow handlesbold anditalic cells.Enhancement:
quick_pdfhas newwidthandheightoptions tochange paper size.Use CSS writing-mode where possible for text rotation. Note that thismay break on non-LTR languages. If this affects you, please file anissue.
Bugfix: LaTeX didn’t compile when height and caption were both set.
Bugfix:
print_screenandprint_mdwould hang with a wide huxtable.Tweaks to documentation.
huxtable 4.1.0
dplyr, knitr, rmarkdown and some other packages have moved to“Suggests:”, lowering the dependency load considerably. All thefunctionality is still present. huxtable gives an informative warningif a needed package is not installed.
Code rewrites for better performance and maintainability: HTML is upto 10x faster, LaTeX is up to 4x faster.
Documentation improvements.
New
tribble_huxfunction wrappingtibble::tribble()for readabledata input.New
add_rowsandadd_columnsfunctions to insert one or more rowsinto the middle of a huxtable.New option “huxtable.knitr_output_format” to override the defaultoutput format in knitr documents.
Numeric row heights and column widths are rescaled to 1 when huxtablesare cbinded/rbinded.
LaTeX: at points where borders cross, priority is given to thehorizontal border color.
Bugfix: property accessors had the wrong environment. Thanks to IñakiÚcar.
Bugfix: row heights and column widths weren’t being copied withcbind/rbind.
Bugfixes for 0-row or 0-column huxtables:
Output works, usually with a warning.
cbind and rbind work.
Bugfix: HTML cols were printed with ‘width: NA’.
Bugfix: width, col_width etc. can be reset to a number after settingthem to a string.
The (undocumented) ability to mix numeric and non-numeric values forpadding and/border widths has been removed. If you want a number,set a number and not a string.
Bugfix: HTML tables with position “right” weren’t right-aligned.
Nicer error messages when rbinding objects with different numbers ofrows.
Vignette improvements.
is_a_numberis deprecated.… and a cool new randomized
hux_logo();-)
huxtable 4.0.1
Improved formatting in Excel output.
New
formatmethod which returns the result ofto_html,to_latexetc. as appropriate.Bugfix:
to_htmlprinting e.g. “left-border: NA;” in cell CSS.Bugfix:
set_all_*not working when huxtable is not attached.Bugfix:
as_Workbookfailing with non-numericwidth.Bugfix:
hux_logowas using multiple fonts, fails with Excel output.Bugfix:
as_flextableborders not working in cells with colspan > 1.Documentation bugfixes.
Compatibility with broom 5.0.0 - thanks @alexpghayes
huxtable 4.0.0
New
theme_plaintheme.The default value for
add_colnamesis going to becomeTRUE. Atpresent it remainsFALSE. Setoptions("huxtable.add_colnames")toTRUEorFALSEto set the default and avoid warnings in future.quick_*functions now automatically open documents if usedinteractively. Useopen = FALSEto avoid.Tweak top and bottom margins for HTML tables.
pad_decimalis deprecated in favour ofalign(ht) <- ".".huxregcontinues with a warning ifstatisticsare unavailable forsome models.
Breaking changes
huxtable now provides
knit_print.data.framemethods. This means thatbare data frames will be pretty-printed via huxtable if the package isloaded.Set
options("huxtable.knit_print_df")toFALSEif you don’t wantthis.By default data frames are printed using the
theme_plaintheme.Set options(“huxtable.knit_print_df_theme”) to a differentone-argument function if you want to use a different theme.
The new
autoformatargument letshuxtable()andas_huxtable()automatically choose alignment and number format based on column type.Setoptions("huxtable.autoformat")toFALSEto turn off thisfeature by default.The default value of
number_formathas changed from “%5.3g” to“%.3g”, which no longer space-pads numbers.as_flextablenow does not print column names in the header. Thismatches the standard huxtable behaviour whereby headers are “justanother row/column”. To get the old behaviour, usecolnames_to_header = TRUE.
Bugfixes
Bugfix: Date and datetime columns were converted to numbers by
add_colnames.LaTeX bugfix: background colors were printing an extra space.
huxregwas never using built-in confidence intervals.Screen bugfixes:
set max_width to screen width (thanks @jacob-long)
misaligned decimal points
Various bugfixes for
number_format,huxreg,as_hux.table,as_flextable.
huxtable 3.0.0
Output to Excel workbooks using the
openxlsxpackage.New
quick_xlsxfunction.dplyr select helpers now work inside
set_*column specifications:e.g. set_bold(ht, 1:3, matches(“ab”), TRUE)Column names can now be used for the
afterargument toinsert_column.quick_*functions: when thefileargument is not explicitlyspecified, confirm overwrites manually, or fail if callednon-interactively.Add pointless quote marks in Description and Title… I don’t make therules.
Don’t apply number_format to negative exponents (e.g. 1.12e-3).
New
tidy_argsargument to huxreg allows per-model customization ofthe call totidy.
Breaking changes
quick_xxxfunctions without an explicitfileargument throw anerror if called non-interactively, and prompt before overwriting filesif called interactively.
huxtable 2.0.2
Don’t apply
number_formatto exponents in scientific notation.Turn off some tests on CRAN, as they fail there but not elsewhere.
huxtable 2.0.1
Fix
quick_pdferror when moving output across filesystems.
huxtable 2.0.0
New
quick_html,quick_pdfandquick_docxfunctions to printtable-like objects to a new document.to_screenonly shows colnames if there are any non-zero-lengthcolumn names.
Breaking changes
number_formatnow applies to any number-like substrings in cells.This means you can include e.g. significance stars in a cell and stillusenumber_formatto format the content.If
number_formatis NA, numbers are unchanged.Default value of
number_formathas changed from “%5.2f” to “%5.3g”,which plays nicer with integers but may surprise you by usingscientific format for large numbers.
huxtable 1.2.0
New
outer_bordersargument forhuxreg. This changes defaultbehaviour slightly.New
borderargument foradd_footnoteto choose width of footnote’stop border.Added guard assertions to many exported functions.
Bugfix: captions and colnames are wrapped in to_screen to respectmax_width.
huxtable 1.1.0
No more ugly autocreated column names.
Allow huxtable to have invalid or empty column names in general.
LaTeX should now bemuch faster on large tables.
set_outer_bordersnow accepts the same row/column arguments as otherset_functions.Better handling in LaTeX of horizontal borders which don’t cross theentire table. (But not varying positive border widths….)
Bugfix: flextable didn’t like huxreg’s syntactically invalid columnnames.
Accept, but silently change, English spelling of ‘centre’ in
align,positionandcaption_pos.
huxtable 1.0.0
LaTeX implements different thicknesses for vertical and horizontalborders (but only one horizontal thickness per row).
LaTeX border colors now collapse nicely: set colors override unsetones.
React gracefully to lack of p values in
huxreg.New
set_outer_bordersfunction to set borders round a rectangle ofcells.to_screenandto_mdnow respectwrapandcol_widthsproperties.Screen and markdown wrap respect word boundaries.
to_screenandto_mdgain amin_widthargument;to_mdgains alogicalheaderargument;to_screengains acompactargumentreplacingblank = NULL.On screen colour and bold support, if the
crayonpackage isinstalled. Newhuxtable.color_screenoption.Move from
ReporteRstoofficerandflextable. No moreRJavahorror.New
error_formatargument tohuxregfor flexible control overuncertainty estimates.Infrastructure improvements: slightly less ugly code in screen.R andLaTeX.R.
Breaking changes
Removed options
collapse,borders,blankandcolname_colorfromto_screen/print_screen.as_FlexTableis deprecated and callsas_flextablewith a warning.header_rowsandfooter_rowsarguments are ignored. If you needthis feature, tell me.HTML border sizes are now set in points, not pixels.
In
huxreg:ci_levelisNULLby default. Set it to a number to calculateconfidence intervals.error_styleis deprecated with a warning in favour oferror_format.Use
{stars}not%stars%to display significance levels in thenoteargument.bordersbecomes a number specifying border width. Set to 0 for noborders.
huxtable 0.3.1
New convenience functions
insert_rowandinsert_column.latex_floatproperty allows you to change positioning in LaTeX.(Semantic versioning fail: this should have been 0.4.0.)
huxtable 0.3.0
New borders argument for huxreg, gives borders in sensible places.
Allow more flexible caption positioning with
caption_pos.New
set_default_propertiesfunction to set default properties fornew huxtables.Fix compatibility with dplyr 0.6.0.
huxtable 0.2.2
Fix a bug that could lead to wrong significance stars in
huxreg.
huxtable 0.2.1
Compatibility with dplyr 0.6.0.
Use ~ for decimal padding in LaTeX.
huxtable 0.2.0
New
huxregfunction to convert a list of models to a huxtable.New set_* interface allowing column ranges, expressions a la
subset, and filling in values by row.Replacement methods
$<-,[<-and[[<-now work better.New function
set_cell_propertiesto set multiple properties oncells.evens,odds,everywhere,every(n, from),final(n),where(cond): convenience functions to select rows, columns andcells.Export to Word/Powerpoint via
ReporteRs.Huxtable now supports dplyr verbs like
filterandselect.Exported function
guess_knitr_output_format.Ability to set border colors.
Prevent overlapping row/colspans.
Expanded introduction and new vignette for
huxreg.Numerous bugs have been fixed and replaced with new, more advancedbugs.
Breaking changes
theme_minimalhas been renamedtheme_basicto avoid a name clashwithggplot2.
huxtable 0.1.0
Added a
NEWS.mdfile to track changes to the package.First CRAN release.
Author(s)
Maintainer: David Hugh-Jonesdavidhughjones@gmail.com
See Also
Useful links:
Package options
Description
Huxtable has several options.
Details
options("huxtable.add_colnames")sets the default value foradd_colnamesinhuxtable()andas_huxtable(). As of version 5.0.0, thisdefaults toTRUE.options("huxtable.print")sets the print method forhuxtable objects. Seeprint.huxtable().options("huxtable.knitr_output_format")overrides the default output formatwhen huxtable objects are printed by knitr. Set to "html", "latex", "md" or"screen". IfNULL(the default), huxtable guesses the format usingguess_knitr_output_format().options("huxtable.autolabel"). IfTRUE, (the default) automaticallysetslabel()from the knitr chunk label, if there is one.options("huxtable.color_screen"). IfTRUEand packagecrayonisavailable, huxtables will be printed in color on screen.options("huxtable.bookdown"). Set toTRUEwithin a bookdown document toautomatically print bookdown-style labels. If unset, huxtable will try toguess if we are in a bookdown document.options("huxtable.knit_print_df"). IfTRUE, data framesin knitr will be pretty-printed using huxtable. This option defaults toTRUEonly if huxtable is attached to the search path usinglibrary(); not if huxtable is merely loaded (e.g. imported by anotherpackage).options("huxtable.knit_print_df_theme"). A function applied to data framesbefore printing in knitr. The function should take one argument (a dataframe) and return a huxtable. Defaults totheme_plain().options("huxtable.autoformat")sets the default value forautoformatinhuxtable()andas_huxtable(). It defaults toTRUE.options("huxtable.latex_use_fontspec"). IfTRUE, use the "fontspec"package, which allows you to use the same font names in TeX and HTML. Thisrequires the the xetex or xelatex engine, which can be set using an .rmdheader option. Note thatquick_pdf()may use pdflatex. The default isFALSE.options("huxtable.long_minus"). IfTRUE, prints long minus signsfor numbers. The default isFALSE. In LaTeX output, this option isoverridden byoptions("huxtable.latex_siunitx_align").options("huxtable.latex_siunitx_align"). IfTRUE, uses the\tablenummacro from the "siunitx" package to align numbers whenalign(ht)is"."or similar. Seealign()for details. The default isFALSE.options("huxtable.quarto_process"). IfTRUE, enables quarto processingof HTML tables. This overrides some huxtable styles, but may allow quartoto do other things, e.g. process citations correctly. The default isFALSE.options("huxtable.autoformat_number_format")andoptions("huxtable.autoformat_align")are lists. The list names are base Rclasses.huxtable()withautoformat = TRUEwill setnumber_format()andalign()for data columns according to the corresponding list values. Forexample, to center-alignDateobjects you could set"huxtable.autoformat_align"to something likelist(..., Date = "center", ...).
Author(s)
Maintainer: David Hugh-Jonesdavidhughjones@gmail.com
See Also
Useful links:
Insert a row or column
Description
These convenience functions wrapcbind orrbind for huxtables, to inserta single row or column.
Usage
insert_column( ht, ..., after = 0, fill = NULL, rowspan = 1, copy_cell_props = TRUE)insert_row( ht, ..., after = 0, fill = NULL, colspan = 1, copy_cell_props = TRUE)Arguments
ht | A huxtable. |
... | Cell contents. |
after | Insert the row/column after this position. 0 (the default) inserts as the first row/column. |
fill | String. If |
rowspan,colspan | Scalar integer. Sets the rowspan or colspan of thefirst cell only.The default |
copy_cell_props | Copy cell properties from the previous row or column (if after > 0). See |
Details
Ininsert_column only, you can use a column name forafter.
Even ifcolspan orrowspan are greater than 1, you must still providevalues for the hidden cells. Usefill = "" for this.
Value
The modified huxtable
See Also
add_rows() andadd_columns(), which insert multiple rows/columns at once.
Examples
insert_row(jams, c("Gooseberry", 2.15), after = 1)insert_column(jams, c("Sugar", "50%", "60%", "40%"), after = "Price")insert_column(jams, "Sugar", after = "Price", fill = "50%")# don't forget to use `fill`:insert_row(jams, "Jams and prices", fill = "", colspan = 2)Prices of 3 jams
Description
A huxtable of jams.
Usage
jamsFormat
A huxtable with 4 rows and 2 columns ("Type" and "Price").
Print data frames in knitr using huxtable
Description
Print data frames in knitr using huxtable
Usage
knit_print.data.frame(x, options, ...)Arguments
x | A huxtable. |
options | Not used. |
... | Not used. |
Details
huxtable defines aknit_print method fordata.frames. This converts the data frameto a huxtable, withadd_colnames = TRUE, themes it usingtheme_plain() and prints it.It also tries to set a few intelligent defaults, e.g. wrapping long columns and settingan appropriate width.To turn this behaviour off, setoptions(huxtable.knit_print_df = FALSE). To change the theme, setoptions("huxtable.knit_print_df_theme") to a one-argument function which should return the huxtable.
See Also
Other knit_print:knit_print.huxtable()
Examples
## Not run: # in your knitr documentmytheme <- function(ht) { ht <- set_all_borders(ht, 0.4) ht <- set_all_border_colors( ht, "darkgreen" ) ht <- set_background_color( ht, evens, odds, "salmon" ) ht}options( huxtable.knit_print_df_theme = mytheme)# groovy!data.frame( a = 1:5, b = 1:5)## End(Not run)Print a huxtable within knitr
Description
Print a huxtable within knitr
Usage
knit_print.huxtable(x, options, ...)Arguments
x | A huxtable. |
options | Not used. |
... | Not used. |
Details
knitr callsknitr::knit_print() on objects when they are printed in a knitr (or RMarkdown) document.The method forhuxtable objects guesses the appropriate output format(including Typst documents when using thetypst package) andprints itself out appropriately. You can override the output format by settingoptions("huxtable.knitr_output_format").
See Also
Other knit_print:knit_print.data.frame()
Set a table label for external referencing
Description
The label is used as the table's label in LaTeX, and as the "id" propertyof the table element in HTML.
Usage
label(ht)label(ht) <- valueset_label(ht, value)Arguments
ht | A huxtable. |
value | A string. Set to |
Details
LaTeX table labels typically start with"tab:".
Within knitr, huxtable labels will default to the same as the knitr chunk label.To turn off this behaviour, setoptions(huxtable.autolabel = FALSE).
If you usebookdown, and set a label on yourtable, the tablecaption() will automatically be prefixed with(#label).You can then refer to the table using@ref(label).label needs to startwith"tab:"; if it doesn't, the"tab:" prefix will be addedautomatically. To turn off this behaviour, setoptions(huxtable.bookdown = FALSE).
Value
property() returns the property value(s).set_property() andmap_property() return the modified huxtable.
See Also
huxtable-options
Examples
set_label(jams, "tab:mytable")Set the position of the table float in LaTeX
Description
Possible values include:
"h": here
"h!" definitely here
"t" top of page
"ht" here or at top of page
"b" bottom of page
"p" page of floats
Usage
latex_float(ht)latex_float(ht) <- valueset_latex_float(ht, value)Arguments
ht | A huxtable. |
value | A string. Set to |
Details
See LaTeX documentation for more details.
Value
property() returns the property value(s).set_property() andmap_property() return the modified huxtable.
Examples
set_latex_float(jams, "b")Set borders
Description
These functions set borders between cells.
Usage
left_border(ht)right_border(ht)top_border(ht)bottom_border(ht)left_border(ht) <- valueright_border(ht) <- valuetop_border(ht) <- valuebottom_border(ht) <- valueset_left_border(ht, row, col, value = 0.4)set_right_border(ht, row, col, value = 0.4)set_top_border(ht, row, col, value = 0.4)set_bottom_border(ht, row, col, value = 0.4)map_left_border(ht, row, col, fn)map_right_border(ht, row, col, fn)map_top_border(ht, row, col, fn)map_bottom_border(ht, row, col, fn)Arguments
ht | A huxtable. |
value | A numeric thickness or a |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
fn | A mapping function. Seemapping-functions for details. |
Details
Borders are always "collapsed":right_border(ht)[, 1] is the same asleft_border(ht)[, 2], and setting one sets the other.
Settingleft_border(ht) <- number sets the border thickness. You can setmultiple properties at once by usingbrdr().
Currently in LaTeX, all non-zero border widths on a given line must be thesame.
Limitations
In HTML, you will need to set a width of at least 3 to get a double border.
Only "solid" and "double" styles are currently implemented in LaTeX, andall non-zero horizontal border widths on a given line must be the same.
See Also
Other border properties:left_border_color(),left_border_style()
Examples
bottom_border(jams)[1, ] <- 0.4jamsbottom_border(jams)[1, ] <- brdr(0.4, "solid", "blue")jamsset_bottom_border(jams, brdr(0.4, "solid", "green"))Set border colors
Description
These functions set border colors.
Usage
left_border_color(ht)right_border_color(ht)top_border_color(ht)bottom_border_color(ht)left_border_color(ht) <- valueright_border_color(ht) <- valuetop_border_color(ht) <- valuebottom_border_color(ht) <- valueset_left_border_color(ht, row, col, value)set_right_border_color(ht, row, col, value)set_top_border_color(ht, row, col, value)set_bottom_border_color(ht, row, col, value)map_left_border_color(ht, row, col, fn)map_right_border_color(ht, row, col, fn)map_top_border_color(ht, row, col, fn)map_bottom_border_color(ht, row, col, fn)Arguments
ht | A huxtable. |
value | A valid R color, e.g. |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
fn | A mapping function. Seemapping-functions for details. |
Details
Borders are always "collapsed":right_border_color(ht)[, 1] is the same asleft_border_color(ht)[, 2], and setting one sets the other.
Limitations
Transparent borders with the alpha channel set are not guaranteed to work.
See Also
Other border properties:left_border(),left_border_style()
Examples
jams <- set_all_borders(jams)bottom_border_color(jams)[1, ] <- "red"jamsset_bottom_border_color(jams, "blue")Set border styles
Description
These functions set border styles.
Usage
left_border_style(ht)right_border_style(ht)top_border_style(ht)bottom_border_style(ht)left_border_style(ht) <- valueright_border_style(ht) <- valuetop_border_style(ht) <- valuebottom_border_style(ht) <- valueset_left_border_style(ht, row, col, value)set_right_border_style(ht, row, col, value)set_top_border_style(ht, row, col, value)set_bottom_border_style(ht, row, col, value)map_left_border_style(ht, row, col, fn)map_right_border_style(ht, row, col, fn)map_top_border_style(ht, row, col, fn)map_bottom_border_style(ht, row, col, fn)Arguments
ht | A huxtable. |
value | One of |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
fn | A mapping function. Seemapping-functions for details. |
Details
Borders are always "collapsed":right_border_style(ht)[, 1] is the same asleft_border_style(ht)[, 2], and setting one sets the other.
Limitations
In HTML, you will need to set a width of at least 3 to get a double border.
Only "solid" and "double" styles are currently implemented in LaTeX.
See Also
Other border properties:left_border(),left_border_color()
Examples
jams <- set_all_borders(jams)bottom_border_style(jams)[1, ] <- "dotted"jamsset_bottom_border_style(jams, "double")How to set cell properties variably by cell contents
Description
This help page explains how to set properties differently for cells,depending on their contents.
For example, in a table of p-values, you could bold cells where p < 0.05:
map_bold(pval_hux, by_ranges(0.05, c(TRUE, FALSE)))
Or you can use red text for a particular value:
hxtbl %>% map_text_color(by_values("Warning" = "red"))There is amap_... function for each huxtable cell property. The syntax is:
map_property(ht, row, col, fn)
whereproperty is the property name.
row andcol specify ranges of rows and columns. Seerowspecs fordetails. To set properties for the whole table, omitrow andcol:
map_property(ht, fn)
Thefn argument is amapping function which maps cell contents toproperty values.
To set property values in "stripes" by rows or by columns, use
by_rows()andby_cols().To set property values for cells with specific contents, use
by_values().To set property values for cells within a numeric range, use
by_ranges().To set property values for cells by quantiles, use
by_quantiles()orby_equal_groups().To set property values for cells that match a string or regular expression,use
by_regex().To map numeric values to a colorspace, use
by_colorspace().For a more general solution, use
by_function()orby_cases().
Caveat
Most functions convert the huxtable to a matrix usingas.matrix(). This canhave unexpected results if you mix character and numeric data. See theexample.
Technical details
fn takes four arguments: the entire original huxtableht, a numeric vector ofrows, a numeric vector ofcols, and thecurrent property values forht[rows, cols], as a matrix. It should returnthe new property values forht[rows, cols], as a matrix.
Examples
ht <- hux(Condition = c("OK", "Warning", "Error"))ht <- map_text_color(ht, by_values( OK = "green", Warning = "orange", Error = "red"))ht# Leaving NA values alone:map_text_color(ht, by_values( "OK" = "blue", NA, ignore_na = TRUE))# Resetting values:map_text_color(ht, by_values( "OK" = "blue", NA, ignore_na = FALSE))ht <- as_hux(matrix(rnorm(15), 5, 3))map_background_color(ht, by_ranges( c(-1, 1), c("blue", "yellow", "red")))map_background_color( ht, by_equal_groups(2, c("red", "green")))ht <- hux( Coef = c(3.5, 2.4, 1.3), Pval = c(0.04, 0.01, 0.07), add_colnames = TRUE)map_bold( ht, everywhere, "Pval", by_ranges(0.05, c(TRUE, FALSE)))# Problems with as.matrix:ht <- hux(c(-1, 1, 2), letters[1:3])as.matrix(ht) # look at the spaces...as.matrix(ht) > 0 # uh ohmap_text_color( ht, by_cases(. < 0 ~ "red", TRUE ~ "blue"))# To avoid this, only look at the truly numeric columns:map_text_color(ht, row = 1:3, col = 1, by_cases(. < 0 ~ "red", TRUE ~ "blue"))Mapping parameters
Description
Mapping parameters
Arguments
values | A vector of property values. |
right | If |
extend | Extend |
ignore_na | If |
colwise | Logical. Calculate breaks separately within each column? |
Interpret cell content as markdown
Description
Cells where the markdown property isTRUE will be interpreted asmarkdown.
Usage
markdown(ht)markdown(ht) <- valueset_markdown(ht, row, col, value = TRUE)map_markdown(ht, row, col, fn)Arguments
ht | A huxtable. |
value | A logical vector or matrix. Set to |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
fn | A mapping function. Seemapping-functions for details. |
Details
Markdown is currently implemented for HTML, Word, Powerpoint, RTF, LaTeX andon-screen display. Word requires theftExtra package.
Most formats usecommonmark, with the"strikethrough" extension enabled.
The following features are intended to work:
bold and italic text
strikethrough (write
~~text~~to strike through text).hyperlinks
There are some quirks:
Paragraph-level properties (e.g. lists) won't work in Word.
Strikethrough will probably not work in Word.
To make lists work in LaTeX, set
width()and ensurewrap()isTRUE.Inline images in RTF work using the INCLUDEPICTURE field type.
Only local images (not urls) work in typst.
If you try to use markdown tables within a table cell, then seek psychiatrichelp.
Note
Markdown content in cells is completely separate from printing the wholetable as markdown usingprint_md(). When you setmarkdown toTRUE,huxtable itself interprets the cell contents as markdown, and spits out HTML,TeX or whatever.
See Also
set_markdown_contents(), a shortcut function.
Examples
jams[3, 2] <- "~2.10~ **Sale!** 1.50"set_markdown(jams, 3, 2)Note about markdown vs.print_md()
Description
Note about markdown vs.print_md()
Note
Markdown content in cells is completely separate from printing the wholetable as markdown usingprint_md(). When you setmarkdown toTRUE,huxtable itself interprets the cell contents as markdown, and spits out HTML,TeX or whatever.
Merge cells across rows or down columns
Description
merge_across() creates multicolumn cells within each row.merge_down() creates multirow cells within each column.
Usage
merge_across(ht, row, col)merge_down(ht, row, col)Arguments
ht | A huxtable. |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
Value
Theht object.
Cell content
In merged cell ranges, only the top left cell's content is displayed.In addition, when you merge cells (either by settingcolspan() orrowspan(), or usingmerge_cells() and friends) the content of the topleft cell is copied to other cells. This prevents unexpected changes tocontent if you reorder or subset rows and columns.
See Also
Other cell merging:merge_cells(),merge_repeated_rows()
Examples
ht <- as_hux(matrix(1:12, 4, 3, byrow = TRUE))ht <- set_all_borders(ht, 1)merge_across(ht, 2:4, 2:3)merge_down(ht, 2:4, 2:3)Merge a range of cells
Description
merge_cells() merges a rectangle of cells into a single displayed cell,by settingcolspan() androwspan().
Usage
merge_cells(ht, row, col)Arguments
ht | A huxtable. |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
Details
merge_cells(ht, c(min_row, max_row), c(min_col, max_col)) is equivalent to
colspan(ht)[min_row, min_col] <- max_col - min_col + 1 rowspan(ht)[min_row, min_col] <- max_row - min_row + 1
Value
Theht object.
Cell content
In merged cell ranges, only the top left cell's content is displayed.In addition, when you merge cells (either by settingcolspan() orrowspan(), or usingmerge_cells() and friends) the content of the topleft cell is copied to other cells. This prevents unexpected changes tocontent if you reorder or subset rows and columns.
See Also
Other cell merging:merge_across(),merge_repeated_rows()
Examples
ht <- hux(a = 1:3, b = 1:3)ht <- set_all_borders(ht, 1)merge_cells(ht, 2:3, 1:2)Merge repeated rows into multirow cells
Description
merge_repeated_rows() looks within each column forcontiguous groups of identical cells. These are mergedby settingrowspan(). Doing this helps remove redundantinformation from the table.
Usage
merge_repeated_rows(ht, row, col)Arguments
ht | A huxtable. |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
Details
Ifrow contains gaps, results may be unexpected (and a warning is given).
Value
Theht object.
Cell content
In merged cell ranges, only the top left cell's content is displayed.In addition, when you merge cells (either by settingcolspan() orrowspan(), or usingmerge_cells() and friends) the content of the topleft cell is copied to other cells. This prevents unexpected changes tocontent if you reorder or subset rows and columns.
See Also
Other cell merging:merge_across(),merge_cells()
Examples
ht <- as_hux(jams[c(1, 2, 2, 3, 3, 4), ])ht <- add_columns(ht, c("Sugar", "30%", "40%", "30%", "40%", "30%"), after = 1)htmerge_repeated_rows(ht)merge_repeated_rows(ht, everywhere, "Type")Use dplyr verbs with huxtable objects
Description
Huxtable can be used with dplyr verbsdplyr::select(),dplyr::rename(),dplyr::relocate(),dplyr::slice(),dplyr::arrange(),dplyr::mutate()anddplyr::transmute(). These will return huxtables. Other verbs likedplyr::summarise() will simply return data frames as normal;dplyr::pull() will return a vector.mutate has an extra option, detailedbelow.
Usage
mutate.huxtable(.data, ..., copy_cell_props = TRUE)Arguments
.data | A huxtable. |
... | Arguments passed to |
copy_cell_props | Logical: copy cell and column properties from existingcolumns. |
Details
Ifmutate creates new columns, and the argumentcopy_cell_propsis missing orTRUE, then cell and column properties will be copied fromexisting columns to their left, if there are any. Otherwise, they will be thestandard defaults. Row and table properties, and properties of cells inexisting columns, remain unchanged.
Examples
ht <- hux(a = 1:5, b = 1:5, c = 1:5, d = 1:5, add_colnames = FALSE)bold(ht)[c(1, 3), ] <- TRUEbold(ht)[, 1] <- TRUEht2 <- dplyr::select(ht, b:c)ht2bold(ht2)ht3 <- dplyr::mutate(ht, x = a + b)ht3bold(ht3)ht4 <- dplyr::mutate(ht, x = a + b, copy_cell_props = FALSE)bold(ht4)Change how NA values are printed
Description
NA values in the huxtable are printed as the value ofna_string.
Usage
na_string(ht)na_string(ht) <- valueset_na_string(ht, row, col, value)map_na_string(ht, row, col, fn)Arguments
ht | A huxtable. |
value | A character vector or matrix. Set to |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
fn | A mapping function. Seemapping-functions for details. |
See Also
Other formatting functions:background_color(),bold(),font(),font_size(),number_format(),text_color()
Examples
jams[3, 2] <- NAjamsset_na_string(jams, "---")Set how numbers are formatted in cells
Description
Ifnumber_format is:
numeric, numbers will be rounded to that many decimal places;
character, it will be used as an argument to
sprintf();a function, the function will be applied to the numbers;
NA, then numbers will not be formatted (except by conversion withas.character).
Usage
number_format(ht)number_format(ht) <- valueset_number_format(ht, row, col, value)map_number_format(ht, row, col, fn)Arguments
ht | A huxtable. |
value | A character or integer vector,a list containing a function, or |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
fn | A mapping function. Seemapping-functions for details. |
Details
Number formatting is applied to any parts of cells that look like numbers.The exception is exponents inscientific notation; huxtable attempts to detect and ignore these.
The default value is "%.3g", which rounds numbers if they have more than 3significant digits, and which may use scientific notation for large numbers.
Note that if your cells are of type numeric, a number format ofNA doesn'tguarantee you get back what you typed in, since R's default conversion mayapply scientific notation and rounding.
To set number_format to a function, enclose the function inlist. The function shouldtake one argument and return a string.fmt_pretty() andfmt_percent()are useful shortcuts for common formatting functions.
See Also
fmt_pretty() andfmt_percent().options("huxtable.long_minus")inhuxtable-options for pretty-printing minus signs.
Other formatting functions:background_color(),bold(),font(),font_size(),na_string(),text_color()
Examples
ht <- huxtable( number_format = c( "Default", "NA", "2", "\"%5.2f\"", "Pretty", "Sign" ), a = rep(1000, 6), b = rep(1000.005, 6), c = rep(0.0001, 6), d = rep(-1, 6), e = rep("3.2 (s.e. 1.4)", 6))number_format(ht)[3, -1] <- NAnumber_format(ht)[4, -1] <- 2number_format(ht)[5, -1] <- "%5.2f"number_format(ht)[6, -1] <- fmt_pretty()number_format(ht)[7, -1] <- list( function(x) ifelse((x > 0), "+", "-"))right_border(ht) <- 1bottom_border(ht)[1, ] <- 1htht_bands <- huxtable("10000 Maniacs", autoformat = FALSE)# probably not what you want:ht_bands# fixed:set_number_format(ht_bands, NA)Cell padding
Description
Functions to get or set the space around cell borders. Top, bottom, left andright padding all default to 6 points.
Usage
left_padding(ht)left_padding(ht) <- valueset_left_padding(ht, row, col, value)map_left_padding(ht, row, col, fn)right_padding(ht)right_padding(ht) <- valueset_right_padding(ht, row, col, value)map_right_padding(ht, row, col, fn)top_padding(ht)top_padding(ht) <- valueset_top_padding(ht, row, col, value)map_top_padding(ht, row, col, fn)bottom_padding(ht)bottom_padding(ht) <- valueset_bottom_padding(ht, row, col, value)map_bottom_padding(ht, row, col, fn)Arguments
ht | A huxtable. |
value | Numeric: padding width/height in points. Set to |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
fn | A mapping function. Seemapping-functions for details. |
See Also
Examples
left_padding(jams) <- 2left_padding(jams)jams <- set_left_padding(jams, 2)left_padding(jams)Set the table's position with respect to surrounding content
Description
Table position may be "left", "right" or "center". If you want text towrap around the table, use "wrapleft" or "wrapright".
Usage
position(ht)position(ht) <- valueset_position(ht, value)Arguments
ht | A huxtable. |
value | String. "left", "center", "right", "wrapleft" or "wrapright". Set to |
Details
"wrapleft" and"wrapright" position the table to the left or right, and allow text towrap around the table.
Value
property() returns the property value(s).set_property() andmap_property() return the modified huxtable.
Examples
set_position(jams, "left")set_position(jams, "right")set_position(jams, "center")Format and print huxtables using a default method
Description
By default huxtables are printed usingprint_screen(). In certain cases, for examplein Sweave documents, it may beuseful to change this. You can do so by settingoptions("huxtable.print").
Usage
## S3 method for class 'huxtable'print(x, ...)## S3 method for class 'huxtable'format(x, ..., output = c("latex", "html", "md", "screen", "rtf", "typst"))Arguments
x | A huxtable. |
... | Options passed to other methods. |
output | Output format. One of |
Value
print prints the huxtable and returnsNULL invisibly.
format returns a string representation fromto_latex(),to_html() etc.
See Also
To change how huxtables are printed withinknitr, seeoptions("huxtable.knitr_output_format") inhuxtable-options
Examples
## Not run: # to print LaTeX output:options(huxtable.print = print_latex)# to print Typst output:options(huxtable.print = print_typst)## End(Not run)format(jams, output = "screen")format(jams, output = "md")format(jams, output = "typst")Create HTML representing a huxtable
Description
These functions print or return an HTML table.print_html also prepends a<style> block defining basic CSS classes.
Usage
print_html(ht, ...)print_notebook(ht, ...)to_html(ht, ...)as_html(ht, ...)Arguments
ht | A huxtable. |
... | Arguments passed to methods. Not currently used. |
Value
to_html returns an HTML string.as_html wrapsto_html and returns anhtmltools::HTML object.print_html prints the string and returnsNULL.
print_notebook prints HTML output suitable for use in anRStudio interactive notebook.
See Also
Other printing functions:print_latex(),print_md(),print_rtf(),print_screen(),print_typst()
Examples
ht <- hux(a = 1:3, b = letters[1:3])to_html(ht)as_html(ht)Create LaTeX representing a huxtable
Description
Create LaTeX representing a huxtable
Usage
print_latex(ht, ...)to_latex(ht, tabular_only = FALSE, ...)Arguments
ht | A huxtable. |
... | Arguments passed to methods. |
tabular_only | Return only the LaTeX tabular, not the surrounding float. |
Details
If we appear to be in a rmarkdown document with the Pandoc markdown+raw_attribute extensionavailable,to_latex will return LaTeX surrounded by a "raw attribute code block" (seehttps://pandoc.org/MANUAL.html#extension-raw_attribute). This helps protect against pandocaccidentally escaping the TeX code.
Value
to_latex returns a string.print_latex prints the string and returnsNULL.
See Also
Other printing functions:print_html(),print_md(),print_rtf(),print_screen(),print_typst()
Examples
ht <- huxtable( a = 1:3, b = letters[1:3])print_latex(ht)Create Markdown representing a huxtable
Description
Create Markdown representing a huxtable
Usage
print_md(ht, ...)to_md(ht, header = TRUE, min_width = getOption("width")/4, max_width = 80, ...)Arguments
ht | A huxtable. |
... | Arguments passed to methods. |
header | Logical. Print the first row as a header? |
min_width | Minimum width in on-screen characters of the result. |
max_width | Maximum width in on-screen characters of the result. Overrides |
Details
Onlyalign andcaption properties are used. The markdown format ismultiline_tables, see thepandoc documentation.
Value
to_md() returns a string.print_md() prints the string and returnsNULL.
See Also
Other printing functions:print_html(),print_latex(),print_rtf(),print_screen(),print_typst()
Examples
print_md(jams)Create RTF representing a huxtable
Description
These functions print or return an RTF character string.
Usage
print_rtf(ht, fc_tables = rtf_fc_tables(ht), ...)to_rtf(ht, fc_tables = rtf_fc_tables(ht), ...)Arguments
ht | A huxtable. |
fc_tables | See |
... | Arguments passed to methods. |
Details
RTF files use a single per-document table for colors, and one for fonts. If you are printingmultiple huxtables in a document, you need to make sure that the font and color table isset up correctly and that the RTF tables refer back to them. Seertf_fc_tables().
Prepare all the huxtables;
Call
rtf_fc_tables(), passing in all the huxtables;Print the
rtfFCTablesobject in the RTF document header;Pass in the
rtfFCTablesobject to each call toprint_rtf.
Value
to_rtf returns a string representing an RTF table. Thefc_tables attribute of thereturned string will contain thefc_tables object that was passed in (or autocreated).print_rtf prints the string and returnsNULL.
Limitations
rmarkdown"s
rtf_documentcan"t yet print out customized color tables, socustom fonts and colors won"t work in this context.col_width()andwidth()can only be numeric or "pt".wrap()has no effect: cell contents always wrap.rotation()can only be 90 or 270, i.e. text going up or down.
See Also
Other printing functions:print_html(),print_latex(),print_md(),print_screen(),print_typst()
Examples
print_rtf(jams)Print a huxtable on screen
Description
Print a huxtable on screen
Usage
print_screen(ht, ...)to_screen( ht, min_width = ceiling(getOption("width")/6), max_width = getOption("width", Inf), compact = TRUE, colnames = TRUE, color = getOption("huxtable.color_screen", default = TRUE), ...)Arguments
ht | A huxtable. |
... | Passed on to |
min_width | Minimum width in on-screen characters of the result. |
max_width | Maximum width in on-screen characters of the result. Overrides |
compact | Logical. To save space, don't print lines for empty horizontal borders. |
colnames | Logical. Whether or not to print colum names. |
color | Logical. Whether to print the huxtable in color (requires the |
Details
Screen display shows the following features:
Table and caption positioning
Merged cells
Cell alignment
Borders
Cell background and border color (if the "crayon" package is installed)
Text color, bold and italic (if the "crayon" package is installed)
Cell padding, widths and heights are not shown.
Value
to_screen returns a string.print_screen prints the string and returnsNULL.
See Also
Other printing functions:print_html(),print_latex(),print_md(),print_rtf(),print_typst()
Examples
bottom_border(jams)[1, 1:2] <- 1bold(jams)[1, 1:2] <- TRUEjams <- map_text_color( jams, by_regex("berry" = "red"))print_screen(jams)Create Typst markup representing a huxtable
Description
These functions print or return a Typst table.
Usage
print_typst(ht, ...)to_typst(ht, ...)Arguments
ht | A huxtable. |
... | Arguments passed to methods. Not currently used. |
Value
to_typst returns a Typst string.print_typst prints the string and returnsNULL.
See Also
Other printing functions:print_html(),print_latex(),print_md(),print_rtf(),print_screen()
Examples
ht <- huxtable(a = 1:3, b = letters[1:3])to_typst(ht)Quickly print objects to a PDF, TeX, Typst, HTML, Microsoft Office or RTF document,or PNG or SVG images
Description
These functions use huxtable to print objects to an output document. They are usefulas one-liners for data reporting.
Usage
quick_latex( ..., file = confirm("huxtable-output.tex"), borders = 0.4, open = interactive())quick_pdf( ..., file = confirm("huxtable-output.pdf"), borders = 0.4, open = interactive(), width = NULL, height = NULL)quick_typst( ..., file = confirm("huxtable-output.typ"), borders = 0.4, open = interactive())quick_typst_pdf( ..., file = confirm("huxtable-output.pdf"), borders = 0.4, open = interactive(), width = NULL, height = NULL)quick_typst_png( ..., file = confirm_prefix("huxtable-output"), borders = 0.4, open = interactive(), width = NULL, height = NULL, ppi = NULL)quick_typst_svg( ..., file = confirm_prefix("huxtable-output"), borders = 0.4, open = interactive(), width = NULL, height = NULL)quick_html( ..., file = confirm("huxtable-output.html"), borders = 0.4, open = interactive())quick_docx( ..., file = confirm("huxtable-output.docx"), borders = 0.4, open = interactive())quick_pptx( ..., file = confirm("huxtable-output.pptx"), borders = 0.4, open = interactive())quick_xlsx( ..., file = confirm("huxtable-output.xlsx"), borders = 0.4, open = interactive())quick_rtf( ..., file = confirm("huxtable-output.rtf"), borders = 0.4, open = interactive())Arguments
... | One or more huxtables or R objects with an |
file | File path for the output. |
borders | Border width for members of |
open | Logical. Automatically open the resulting file? |
width | String passed to the LaTeX |
height | String passed to the LaTeX |
ppi | Pixels per inch for PNG output. |
Details
Objects in... will be converted to huxtables, with borders added.
If ‘file’ is not specified, the command will fail in non-interactive sessions. Ininteractive sessions, the default file path is "huxtable-output.xxx" in the working directory;if this already exists, you will be asked to confirm manually before proceeding.
To create docx and pptx filesflextable andofficer must be installed, while xlsxneedsopenxlsx.quick_typst_pdf(),quick_typst_png(), andquick_typst_svg() require thetypstcommand line tool.
quick_typst_pdf() with e.g.file = "foo.pdf" will overwrite and deletethe filefoo.typ.
quick_typst_png() andquick_typst_svg() create one image per huxtable. If there is more thanone object in..., images will have a numeric suffix like"-1", "-2" etc.Existing files with the samefile prefix will be overwritten afterconfirmation in interactive sessions.
Value
InvisibleNULL.
Examples
## Not run: m <- matrix(1:4, 2, 2)quick_pdf(m, jams)quick_latex(m, jams)quick_typst(m, jams)quick_typst_pdf(m, jams)quick_typst_png(m, jams)quick_typst_svg(m, jams)quick_html(m, jams)quick_docx(m, jams)quick_xlsx(m, jams)quick_pptx(m, jams)quick_rtf(m, jams)## End(Not run)Objects exported from other packages
Description
These objects are imported from other packages. Follow the linksbelow to see their documentation.
Manage LaTeX dependencies for huxtables
Description
report_latex_dependencies prints out and/or returns a list of LaTeX dependencies for addingto a LaTeX preamble.
check_latex_dependencies checks whether the required LaTeX packages are installed.
install_latex_dependencies is a utility function to install and/or updatethe LaTeX packages that huxtable requires. It callstinytex::tlmgr_install() if possible, ortlmgr installdirectly.
Usage
report_latex_dependencies(quiet = FALSE, as_string = FALSE)check_latex_dependencies(quiet = FALSE)install_latex_dependencies()Arguments
quiet | Logical. For |
as_string | Logical: return dependencies as a string. |
Value
Ifas_string isTRUE,report_latex_dependencies returns a string of"\\\\usepackage\\{...\\}" statements; otherwise it returns a list ofrmarkdown::latex_dependency objects, invisibly.
check_latex_dependencies() returnsTRUE orFALSE.
install_latex_dependencies returnsTRUE iftlmgr returns 0.
Examples
report_latex_dependencies()## Not run: check_latex_dependencies()## End(Not run)## Not run: install_latex_dependencies()## End(Not run)Restack huxtables across/down the page
Description
restack_across()splits a huxtable horizontally, then joins the partsup side by side.restack_down()splits a huxtable vertically, then joins the parts uptop to bottom.
Usage
restack_across( ht, rows, headers = TRUE, on_remainder = c("warn", "stop", "fill"))restack_down( ht, cols, headers = TRUE, on_remainder = c("warn", "stop", "fill"))Arguments
ht | A huxtable |
rows,cols | How many rows/columns the new result should have. |
headers | Logical. Take account of header rows/columns? |
on_remainder | String. "warn", "stop" or "fill". See below. |
Details
Ifheaders isTRUE, header rows/columns will be repeated across/downthe restacked huxtable as necessary.
on_remainder determines what happens if the huxtable could not be evenlydivided for restacking:
"stop": stop with an error."fill": fill the remainder with empty cells."warn"(the default): issue a warning, then fill the remainder with emptycells.
Value
A new huxtable.
See Also
Examples
ht <- as_hux(matrix(LETTERS[1:4], 2, 2))ht <- set_all_borders(ht)htrestack_down(ht, 1)restack_across(ht, 1)# headers:restack_across(jams, 2)restack_across(jams, 2, headers = FALSE)# on_remainder:restack_across(jams, 3, on_remainder = "fill")Rotate text within cells
Description
Numbers represent degrees to rotate text anti-clockwise:
Usage
rotation(ht)rotation(ht) <- valueset_rotation(ht, row, col, value)map_rotation(ht, row, col, fn)Arguments
ht | A huxtable. |
value | A numeric vector or matrix. Set to |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
fn | A mapping function. Seemapping-functions for details. |
Details
0 is the default;
90 is going upwards, for left-to-right languages;
270 is going downwards.
You will probably need to setcol_width() androw_height() explicitlyto achieve a nice result, in both HTML and LaTeX.
Examples
rotation(jams) <- 90rotation(jams)jams2 <- set_rotation( jams, 270)rotation(jams2)jams3 <- set_rotation( jams, 2:3, 1, 270)rotation(jams3)jams4 <- map_rotation( jams, by_rows( 270, 90 ))rotation(jams4)Set the height of table rows
Description
Numeric heights are scaled to 1 and treated as proportions of the table heightin HTML, or of the text height (\textheight) in LaTeX. Characterrow heights must be valid CSS or LaTeX dimensions.
Usage
row_height(ht)row_height(ht) <- valueset_row_height(ht, row, value)Arguments
ht | A huxtable. |
value | Numeric or character vector. Set to |
row | A row specifier. Seerowspecs for details. |
Value
row_height() returns therow_height property.set_row_height() returns the modified huxtable.
See Also
Other table measurements:col_width(),height(),width()
Examples
row_height(jams) <- c(.4, .2, .2, .2)row_height(jams)Different ways to select rows and columns
Description
This help page describes how to use therow andcol arguments inset_* functions.
The basics
Theset_* functions for cell properties all have arguments like this:set_property(ht, row, col, value).
You can treatrow andcol arguments like arguments fordata frame subsetting. For example, you can userow = 1:3 to get thefirst three rows,col = "salary" to specify the column named "salary", orrow = ht$salary >= 50000 to specify rows where a condition is true.
There are also a few extra tricks you can use:
Write
set_property(ht, x), omittingrowandcol, to set the property toxfor all cells.Use
everywhereto refer to all rows or all columns.Use
final(n)to refer to the last n rows or columns.Use
evensto get only even rows/columns andoddsfor only odd ones.Use
stripe(n, from = m)to get every nth row/column starting at row/column m.Use
dplyrfunctions likestarts_with,containsandmatchestospecify columns (but not rows). Seetidyselect::languagefor a full list.
The gory details
How the row and col arguments are parsed depends on the number of arguments passed to theset_*function.
If there are two arguments then the second argument is taken as thevalue and is set for all rows and columns.
If there are four arguments:
If
roworcolis numeric, character or logical, it is evaluated just as in standardsubsetting.colwill be evaluated in a special context provided bytidyselect::with_vars()to allow the use of dplyr functions.If
roworcolis a function,it is called with two arguments: the huxtable,and the dimension number being evaluated, i.e. 1 for rows, 2 for columns. It must return a vectorof column indices.evens(),odds(),stripe()andfinal()return functions for this purpose.
Examples
set_bold(jams, 2:4, 1:2, TRUE)set_background_color( jams, evens, everywhere, "grey95")set_bold( jams, everywhere, tidyselect::matches("yp"), TRUE)set_text_color( jams, 2:4, 1:2, c("red", "violetred", "purple"))Create RTF font and color tables
Description
Create RTF font and color tables
Usage
rtf_fc_tables(..., extra_fonts = "Times", extra_colors = character(0))Arguments
... | One or more objects of class |
extra_fonts | Extra fonts to include. These will be first in the fonts table. |
extra_colors | Extra colors to include, as R color names. |
Details
RTF documents have a single table of fonts, and a table of colors, in the RTF header. Tocreate font and color tables for multiple huxtables, use this command. You canprint thereturned object in the RTF header. Pass it toprint_rtf() orto_rtf() to ensure thathuxtables print out the correct colour references.
Value
An object of classrtfFCTables. This is a list containing two items:"fonts"is a character vector of unique font names;"colors" is a character vector of unique colornames.
Examples
# Printing multiple huxtables:ht <- huxtable("Blue with red border")ht <- set_all_borders(ht, 1)ht <- set_all_border_colors(ht, "red")background_color(ht) <- "blue"ht2 <- huxtable("Dark green text")text_color(ht2) <- "darkgreen"fc_tbls <- rtf_fc_tables(ht, ht2)# In the document header:print(fc_tbls)# In the document body:print_rtf(ht, fc_tables = fc_tbls)print_rtf(ht2, fc_tables = fc_tbls)Escape text for various formats
Description
This escapes a string for LaTeX, HTML, Typst or RTF.
Usage
sanitize(str, type = c("latex", "html", "typst", "rtf"))Arguments
str | A character object. |
type |
|
Details
HTML and LaTeX code was copied over fromxtable::sanitize().
Value
The sanitized character object.
Examples
txt <- "Make $$$ with us"sanitize(txt, type = "latex")Set left, right, top and bottom properties
Description
These functions set left, right,top and/or bottom propertiessimultaneously for the specified cells.
Usage
set_all_borders(ht, row, col, value = 0.4)map_all_borders(ht, row, col, fn)set_all_border_colors(ht, row, col, value)map_all_border_colors(ht, row, col, fn)set_all_border_styles(ht, row, col, value)map_all_border_styles(ht, row, col, fn)set_all_padding(ht, row, col, value)map_all_padding(ht, row, col, fn)set_tb_padding(ht, row, col, value)map_tb_padding(ht, row, col, fn)set_lr_padding(ht, row, col, value)map_lr_padding(ht, row, col, fn)set_tb_borders(ht, row, col, value)map_tb_borders(ht, row, col, fn)set_lr_borders(ht, row, col, value)map_lr_borders(ht, row, col, fn)set_tb_border_colors(ht, row, col, value)map_tb_border_colors(ht, row, col, fn)set_lr_border_colors(ht, row, col, value)map_lr_border_colors(ht, row, col, fn)set_tb_border_styles(ht, row, col, value)map_tb_border_styles(ht, row, col, fn)set_lr_border_styles(ht, row, col, value)map_lr_border_styles(ht, row, col, fn)Arguments
ht | A huxtable. |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
value | Value(s) to set. Set to |
fn | A mapping function. Seemapping-functions for details. |
Details
set_all_*functions set top, bottom, left and right properties.set_tb_*functions set top and bottom properties.set_lr_*functions set left and right properties.
Value
The modified huxtable.
See Also
borders,border-colors,border-styles,padding.
Examples
ht <- as_hux(jams)ht <- set_all_borders(ht)htht <- set_all_border_colors(ht, "red")htht <- set_all_border_styles(ht, "double")ht <- set_all_padding(ht, 1:3, 1:2, "20px")ht <- set_tb_padding(ht, 10)ht <- set_tb_borders(ht)set_tb_border_colors(ht, "red")set_tb_border_styles(ht, "double")Set borders and padding around a rectangle of cells
Description
Set borders and padding around a rectangle of cells
Usage
set_outer_borders(ht, row, col, value = 0.4)set_outer_border_colors(ht, row, col, value)set_outer_border_styles(ht, row, col, value)set_outer_padding(ht, row, col, value)Arguments
ht | A huxtable. |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
value | Border width, color, style or a |
Details
set_outer_borders sets borders round the top, bottom, left andright of a group of cells. Behaviour is undefined unlessrow andcolspecify contiguous sequences.set_outer_border_colors andset_outer_border_styles set border colors and styles.set_outer_paddingsets padding, i.e. top padding on the top row of cells, etc.
Examples
ht2 <- huxtable(a = 1:3, b = 1:3)set_outer_borders(ht2)set_outer_borders(ht2, 2:3, 1:2)Set cell contents
Description
set_contents() is a convenience function to change the cell contents of a huxtable withina dplyr chain.set_contents(ht, x, y, foo) just callsht[x, y] <- foo and returnsht.
Usage
contents(ht)contents(ht) <- valueset_contents(ht, row, col, value)map_contents(ht, row, col, fn)Arguments
ht | A huxtable. |
value | Cell contents. |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
fn | A mapping function. Seemapping-functions for details. |
Examples
data(jams)set_contents(jams, 2, 1, "Blackcurrant")map_contents(jams, by_regex(".*berry" = "Snodberry"))Default huxtable properties
Description
Defaults are used for new huxtables, and also when a property is set toNA.
Usage
set_default_properties(...)get_default_properties(names = NULL)Arguments
... | Properties specified by name, or a single named list. |
names | Vector of property names. If |
Details
Note thatautoformat = TRUE inhuxtable() overrides some defaults.
To set default border styles, use the pseudo-propertiesborder/border_style/border_color. You cannot set defaults separately fordifferent sides.
Value
Forset_default_properties, a list of the previous property values, invisibly.
Forget_default_properties, a list of the current defaults.
See Also
Options for autoformat inhuxtable-options.
Examples
old <- set_default_properties( text_color = "red", border = 0.4)hux(a = 1:2, b = 1:2)set_default_properties(old)get_default_properties("bold")Set cell contents, interpreting them as markdown
Description
This convenience function callsset_contents() andset_markdown().
Usage
set_markdown_contents(ht, row, col, value)Arguments
ht | A huxtable. |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
value | Cell contents, as a markdown string. |
Value
The modified huxtable.
Note
Markdown content in cells is completely separate from printing the wholetable as markdown usingprint_md(). When you setmarkdown toTRUE,huxtable itself interprets the cell contents as markdown, and spits out HTML,TeX or whatever.
See Also
Examples
set_markdown_contents( jams, 1, 1, "**Type** of jam")Section about colspan/rowspan
Description
Section about colspan/rowspan
Cell content
In merged cell ranges, only the top left cell's content is displayed.In addition, when you merge cells (either by settingcolspan() orrowspan(), or usingmerge_cells() and friends) the content of the topleft cell is copied to other cells. This prevents unexpected changes tocontent if you reorder or subset rows and columns.
Extend cells over multiple rows and/or columns
Description
A cell with rowspan of 2 covers the cell directly below it. A cell withcolspan of 2 covers the cell directly to its right. A cell with rowspan of 2and colspan of 2 covers a 2 x 2 square, hiding three other cells.
Usage
rowspan(ht)rowspan(ht) <- valueset_rowspan(ht, row, col, value)map_rowspan(ht, row, col, fn)colspan(ht)colspan(ht) <- valueset_colspan(ht, row, col, value)map_colspan(ht, row, col, fn)Arguments
ht | A huxtable. |
value | An integer vector or matrix. |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
fn | A mapping function. Seemapping-functions for details. |
Cell content
In merged cell ranges, only the top left cell's content is displayed.In addition, when you merge cells (either by settingcolspan() orrowspan(), or usingmerge_cells() and friends) the content of the topleft cell is copied to other cells. This prevents unexpected changes tocontent if you reorder or subset rows and columns.
See Also
merge_cells(),merge_across() andmerge_down() fora higher-level interface.
Examples
letter_hux <- as_hux(matrix(LETTERS[1:9], 3, 3))letter_hux <- set_all_borders(letter_hux)letter_huxset_rowspan(letter_hux, 1, 1, 2)set_colspan(letter_hux, 1, 1, 2)Split a huxtable into multiple huxtables
Description
These functions split a huxtable horizontally or vertically, andreturn the new sub-tables in a list.
Usage
split_across(ht, after, height, headers = TRUE)split_down(ht, after, width, headers = TRUE)Arguments
ht | A huxtable. |
after | Rows/columns after which to split. Seerowspecs for details.Note thattidyselect semantics are allowedin |
height,width | Maximum height/width for the result. |
headers | Logical. Take account of header rows/columns? |
Details
Only one ofafter andwidth orheight must be given. Ifwidth orheight is given, the huxtable will be split bycol_width() orrow_height(), which must be numeric with noNA values.
Ifheaders isTRUE, all previous headers will be added to eachnew table.
Value
A list of huxtables.
See Also
Examples
ht <- as_hux(matrix(LETTERS[1:16], 4, 4))ht <- set_all_borders(ht)split_across(ht, after = 2)split_down(ht, after = c(1, 3))col_width(ht) <- c(0.15, 0.1, 0.25, 0.3)split_down(ht, width = 0.3)# split by column name:split_down(jams, "Type")# headers are repeated:split_across(jams, 3)Return every n row or column numbers
Description
This is a convenience function to use in row or column specifications.In this context,stripe(n, from) will returnfrom, from + n, ..., up to the number of rowsor columns of the huxtable.evens andodds return even and oddnumbers, i.e. they are equivalent tostripe(2, 2) andstripe(2, 1) respectively.everywhere returns all rows or columns, equivalently tostripe(1).
Usage
stripe(n = 1, from = n)everywhere(ht, dimension)evens(ht, dimension)odds(ht, dimension)Arguments
n | A number (at least 1) |
from | A number (at least 1) |
ht | An object with a |
dimension | Number of the dimension to use. |
Details
Technically,stripe returns a 2-argument function which can be called likef(ht, dimension). Seerowspecs for details.
Until huxtable 5.0.0,stripe was calledevery. It was renamed toavoid a clash withpurrr::every.
Examples
ht <- huxtable(a = 1:10, b = 1:10)set_background_color( ht, evens, everywhere, "grey95")set_background_color( ht, stripe(3), everywhere, "grey95")Set background color stripes
Description
These convenience functions callmap_background_color withby_rowsorby_cols.
Usage
stripe_rows(ht, stripe1 = "white", stripe2 = "grey90")stripe_columns(ht, stripe1 = "white", stripe2 = "grey90")Arguments
ht | A huxtable. |
stripe1 | Color for rows/columns 1, 3, 5, ... |
stripe2 | Color for rows/columns 2, 4, 6, ... |
Examples
stripe_rows(jams)stripe_columns(jams)stripe_rows(jams, "red", "blue")Set multiple properties on headers
Description
These functions set arbitrary cell properties on cells in header rowsand/or columns.
Usage
style_headers(ht, ...)style_header_rows(ht, ...)style_header_cols(ht, ...)style_cells(ht, row, col, ...)set_cell_properties(ht, row, col, ...)Arguments
ht | A huxtable. |
... | Named list of cell properties. |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
Details
style_headerssets properties on all header cells.style_header_rowssets properties on header rows.style_header_colssets properties on header columns.style_cellssets properties on all selected cells.
set_cell_properties is a deprecated alias forstyle_cells. Don't use it.
Examples
style_headers(jams, text_color = "red")jams <- set_header_cols(jams, 1, TRUE)style_header_cols(jams, text_color = c( NA, "red", "darkred", "purple" ))style_cells(jams, everywhere, 2, bold = TRUE)Transpose a huxtable
Description
t() switches a huxtable so rows become columns and columns become rows.
Usage
## S3 method for class 'huxtable't(x)Arguments
x | A huxtable. |
Details
Row and column spans ofx will be swapped, as will column widths and row heights,table width and height, and cell borders (bottom becomes right, etc.).Other properties - in particular, alignment, vertical alignment and rotation - will bepreserved.
Value
The transposed huxtable.
Examples
ht <- huxtable( a = 1:3, b = letters[1:3], autoformat = FALSE)bottom_border(ht)[3, ] <- 1htt(ht)Set the "table" environment in LaTeX
Description
By default this is"table".
Usage
table_environment(ht)table_environment(ht) <- valueset_table_environment(ht, value)Arguments
ht | A huxtable. |
value | A string. Set to |
Details
No features are guaranteed to work if you set this to a non-defaultvalue. Use at your own risk! In particular, you may need to setlatex_float() to a non-default value.
Ifposition() is set to"wrapleft" or"wrapright", thisvalue is overridden.
Value
property() returns the property value(s).set_property() andmap_property() return the modified huxtable.
Examples
set_table_environment(jams, "table*")Set the table's tabular environment in LaTeX
Description
By default this is either"tabular" or"tabularx".
Usage
tabular_environment(ht)tabular_environment(ht) <- valueset_tabular_environment(ht, value)Arguments
ht | A huxtable. |
value | A string. Set to |
Details
No features are guaranteed to work if you set this to a non-defaultvalue. Use at your own risk!
Value
property() returns the property value(s).set_property() andmap_property() return the modified huxtable.
Examples
set_tabular_environment(jams, "longtable")Set the color of text in cells
Description
Colors can be in any format understood by R:
A color name like
"darkred"A HTML string like
"#FF0000"The result of a function like
rgb(1, 0, 0)orgrey(0.5)
Usage
text_color(ht)text_color(ht) <- valueset_text_color(ht, row, col, value)map_text_color(ht, row, col, fn)Arguments
ht | A huxtable. |
value | A character vector or matrix. Set to |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
fn | A mapping function. Seemapping-functions for details. |
See Also
Other formatting functions:background_color(),bold(),font(),font_size(),na_string(),number_format()
Examples
text_color(jams) <- "blue"text_color(jams)set_text_color(jams, "red")set_text_color(jams, 2:3, 1, "red")map_text_color(jams, by_rows("red", "blue"))Theme a huxtable
Description
These functions quickly set default styles for a huxtable.
Usage
theme_plain(ht, header_rows = TRUE, position = "center")theme_bright( ht, header_rows = TRUE, header_cols = FALSE, colors = c("#7eabf2", "#e376e3", "#fcbb03", "#7aba59", "#fc0356"))theme_basic(ht, header_rows = TRUE, header_cols = FALSE)theme_compact(ht, header_rows = TRUE, header_cols = FALSE)theme_striped( ht, stripe = "grey90", stripe2 = "grey95", header_rows = TRUE, header_cols = TRUE)theme_grey(ht, header_rows = TRUE, header_cols = TRUE)theme_blue(ht, header_rows = TRUE, header_cols = TRUE)theme_orange(ht, header_rows = TRUE, header_cols = TRUE)theme_green(ht, header_rows = TRUE, header_cols = TRUE)theme_article(ht, header_rows = TRUE, header_cols = TRUE)theme_mondrian(ht, prop_colored = 0.1, font = NULL)Arguments
ht | A huxtable object. |
header_rows | Logical: style header rows? |
position | "left", "center" or "right" |
header_cols | Logical: style header columns? |
colors | Colors for header rows. Can also be a palette function. |
stripe | Background colour for odd rows |
stripe2 | Background colour for even rows |
prop_colored | Roughly what proportion of cells should havea primary-color background? |
font | Font to use. For LaTeX, try |
Details
theme_plainis a simple theme with a bold header, a grey stripedbackground, and an outer border.theme_basicsets header rows/columns to bold, and adds a border beneaththem.theme_compactis liketheme_basicbut with minimal padding.theme_stripeduses different backgrounds for alternate rows, and forheaders.theme_articleis similar to the style of many scientific journals.It sets horizontal lines above and below the table.theme_brightuses thick white borders and a colourful header. Itworks nicely with sans-serif fonts.theme_grey,theme_blue,theme_orangeandtheme_greenuse whiteborders and subtle horizontal stripes.theme_mondrianmimics the style of a Mondrian painting, with thick blackborders and randomized colors.
Value
The huxtable object, appropriately styled.
Examples
theme_plain(jams)theme_basic(jams)theme_compact(jams)theme_striped(jams)theme_article(jams)theme_bright(jams)theme_grey(jams)theme_blue(jams)theme_orange(jams)theme_green(jams)theme_mondrian(jams)Change a model'stidy output
Description
Usetidy_override andtidy_replace to provide your own p values,confidence intervals etc. for a model.
Usage
tidy_override(x, ..., glance = list(), extend = FALSE)tidy_replace(x, tidied, glance = list())## S3 method for class 'tidy_override'tidy(x, ...)## S3 method for class 'tidy_override'glance(x, ...)## S3 method for class 'tidy_override'nobs(object, ...)Arguments
x | A model with methods defined for |
... | In |
glance | A list of summary statistics for |
extend | Logical: allow adding new columns to |
tidied | Data frame to replace the result of |
object | A |
Details
tidy_override allows you to replace some columns oftidy(x) with your owndata.
tidy_replace allows you to replace the result oftidy(x) entirely.
Value
An object that can be passed in tohuxreg.
Examples
if (!requireNamespace("broom", quietly = TRUE)) { stop("Please install 'broom' to run this example.")}lm1 <- lm(mpg ~ cyl, mtcars)fixed_lm1 <- tidy_override(lm1, p.value = c(.04, .12), glance = list(r.squared = 0.99))huxreg(lm1, fixed_lm1)if (requireNamespace("nnet", quietly = TRUE)) { mnl <- nnet::multinom(gear ~ mpg, mtcars) tidied <- broom::tidy(mnl) mnl4 <- tidy_replace(mnl, tidied[tidied$y.level == 4, ]) mnl5 <- tidy_replace(mnl, tidied[tidied$y.level == 5, ]) huxreg(mnl4, mnl5, statistics = "nobs")}Set the vertical alignment of cell content
Description
Allowed values are "top", "middle", "bottom" orNA.
Usage
valign(ht)valign(ht) <- valueset_valign(ht, row, col, value)map_valign(ht, row, col, fn)Arguments
ht | A huxtable. |
value | A character vector or matrix. Set to |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
fn | A mapping function. Seemapping-functions for details. |
Details
Vertical alignment may not work for short text in LaTeX.Defining row heights withrow_height() may help.
Examples
valign(jams) <- "top"valign(jams)jams2 <- set_valign(jams, "bottom")valign(jams2)jams3 <- set_valign(jams, 2:3, 1, "bottom")valign(jams3)jams4 <- map_valign(jams, by_rows( "bottom", "top"))valign(jams4)Set the table width
Description
width() sets the width of the entire table, whilecol_width() sets thewidth of individual columns. A numeric width is treated as a proportion off the surrounding block width (HTML) or text width (LaTeX). A character widthmust be a valid CSS or LaTeX dimension.
Usage
width(ht)width(ht) <- valueset_width(ht, value)Arguments
ht | A huxtable. |
value | A number or string. Set to |
Value
property() returns the property value(s).set_property() andmap_property() return the modified huxtable.
See Also
Other table measurements:col_width(),height(),row_height()
Examples
set_width(jams, 0.8)Wrap cell content over multiple lines
Description
Text wrapping only works when the tablewidth() has been set. Inparticular, if you want to insert newlines in cells, then you shouldset a value forwidth() and setwrap toTRUE.
Usage
wrap(ht)wrap(ht) <- valueset_wrap(ht, row, col, value)map_wrap(ht, row, col, fn)Arguments
ht | A huxtable. |
value | A logical vector or matrix. Set to |
row | A row specifier. Seerowspecs for details. |
col | An optional column specifier. |
fn | A mapping function. Seemapping-functions for details. |
Examples
long_text <- paste( rep("Some long text.", 10), collapse = " ")ht <- huxtable(Long = long_text)width(ht) <- 0.2wrap(ht) <- TRUE## Not run: quick_html(ht)## End(Not run)