R: Create tables in LaTeX, HTML, Markdown and reStructuredText

kable {knitr} | R Documentation

## Create tables in LaTeX, HTML, Markdown and reStructuredText

### Description

This is a very simple table generator. It is simple by design. It is not intended to replace any other R packages for making tables.

### Usage

    kable(x, format, digits = getOption("digits"), row.names = NA, col.names = NA, align,
        caption = NULL, format.args = list(), escape = TRUE, ...)

### Arguments

`x` | An R object, typically a matrix or data frame.
`format` | A character string. Possible values are `latex`, `html`, `markdown`, `pandoc`, and `rst`; this will be automatically determined if the function is called within knitr; it can also be set in the global option `knitr.table.format`. If `format` is a function, it must return a character string.
`digits` | Maximum number of digits for numeric columns, passed to `round()`. This can also be a vector of length `ncol(x)`, to set the number of digits for individual columns.
`row.names` | Logical: whether to include row names. By default, row names are included if `rownames(x)` is neither `NULL` nor identical to `1:nrow(x)`.
`col.names` | A character vector of column names to be used in the table.
`align` | Column alignment: a character vector consisting of `'l'` (left), `'c'` (center) and/or `'r'` (right). By default or if `align = NULL`, numeric columns are right-aligned, and other columns are left-aligned. If `length(align) == 1L`, the string will be expanded to a vector of individual letters, e.g. `'clc'` becomes `c('c', 'l', 'c')`, unless the output format is LaTeX.
`caption` | The table caption.
`format.args` | A list of arguments to be passed to `format()` to format table values, e.g. `list(big.mark = ',')`.
`escape` | Boolean; whether to escape special characters when producing HTML or LaTeX tables.
`...` | Other arguments (see Examples).

### Details

Missing values (`NA`) in the table are displayed as `NA` by default. If you want to display them with other characters, you can set the option `knitr.kable.NA`, e.g. `options(knitr.kable.NA = '')` to hide `NA` values.

### Value

A character vector of the table source code.

### Note

The tables for `format = 'markdown'` also work for Pandoc when the `pipe_tables` extension is enabled (this is the default behavior for Pandoc >= 1.10).

When using `kable()` as a top-level expression, you do not need to explicitly `print()` it due to R's automatic implicit printing. When it is wrapped inside other expressions (such as a `for` loop), you must explicitly `print(kable(...))`.

### References

See https://github.com/yihui/knitr-examples/blob/master/091-knitr-table.Rnw for some examples in LaTeX, but they also apply to other document formats.

### See Also

Other R packages such as huxtable, xtable, kableExtra, and tables for HTML and LaTeX tables, and ascii and pander for different flavors of markdown output and some advanced features and table styles.

### Examples

    kable(head(iris), format = "latex")
    kable(head(iris), format = "html")
    kable(head(iris), format = "latex", caption = "Title of the table")
    kable(head(iris), format = "html", caption = "Title of the table")
    # use the booktabs package
    kable(mtcars, format = "latex", booktabs = TRUE)
    # use the longtable package
    kable(matrix(1000, ncol = 5), format = "latex", digits = 2, longtable = TRUE)
    # add some table attributes
    kable(head(iris), format = "html", table.attr = "id=\"mytable\"")
    # reST output
    kable(head(mtcars), format = "rst")
    # no row names
    kable(head(mtcars), format = "rst", row.names = FALSE)
    # R Markdown/Github Markdown tables
    kable(head(mtcars[, 1:5]), format = "markdown")
    # no inner padding
    kable(head(mtcars), format = "markdown", padding = 0)
    # more padding
    kable(head(mtcars), format = "markdown", padding = 2)
    # Pandoc tables
    kable(head(mtcars), format = "pandoc", caption = "Title of the table")
    # format numbers using , as decimal point, and ' as thousands separator
    x = as.data.frame(matrix(rnorm(60, 1e+06, 10000), 10))
    kable(x, format.args = list(decimal.mark = ",", big.mark = "'"))
    # save the value
    x = kable(mtcars, format = "html")
    cat(x, sep = "\n")
    # can also set options(knitr.table.format = 'html') so that the output is HTML

[Package knitr version 1.20 Index]