kable
Create tables in LaTeX, HTML, Markdown and reStructuredText
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,
label = 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
, andrst
; this will be automatically determined if the function is called within knitr; it can also be set in the global optionknitr.table.format
. Ifformat
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 lengthncol(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 neitherNULL
nor identical to1: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 ifalign = NULL
, numeric columns are right-aligned, and other columns are left-aligned. Iflength(align) == 1L
, the string will be expanded to a vector of individual letters, e.g.'clc'
becomesc('c', 'l', 'c')
, unless the output format is LaTeX.- caption
The table caption.
- label
The table reference label. By default, the label is obtained from
knitr::opts_current$get('label')
.- 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. When
escape = FALSE
, you have to make sure that special characters will not trigger syntax errors in LaTeX or HTML.- ...
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
# NOT RUN {
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)
# change LaTeX default table environment
kable(head(iris), format = "latex", caption = "My table", table.envir = "table*")
# 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
# }
Community examples
kable(head(mtcars), format = "rst", row.names = FALSE)