The main function for creating interactive DataTables. Works standalone (R Markdown, Quarto, Viewer) and inside Shiny.
Styling is controlled directly via theme, striped, hover,
compact, font_scale – or a CSS class string for full control.
DataTables configuration goes in options (1:1 mapping to the
JavaScript API). The two concerns are cleanly separated.
Usage
dt2(
data,
theme = "default",
striped = NULL,
hover = NULL,
compact = NULL,
font_scale = NULL,
style = NULL,
class = NULL,
button_class = NULL,
responsive = TRUE,
options = list(),
extensions = NULL,
width = "100%",
height = NULL,
elementId = NULL
)Arguments
- data
A
data.frame,tibble, ormatrix.- theme
A theme preset name (
"default","clean","minimal","compact") or adt2_theme()object. Default:"default".- striped, hover, compact
Logical; override the theme.
NULL(default) = use theme value.- font_scale
Numeric; override the theme font-scale.
NULL(default) = use theme value.- style
Styling framework:
"bootstrap5"(default) or"core".- class
Optional CSS class string (e.g.,
"table table-dark"). If provided, overrides all theme-generated classes.CSS class for Buttons extension buttons. Default:
"btn btn-sm btn-outline-secondary". Examples:"btn btn-sm btn-primary","btn btn-sm btn-outline-dark".- responsive
Logical; enable the Responsive extension so the table fills 100\ Default:
TRUE. SetFALSEto disable.- options
List of DataTables options. See https://datatables.net/reference/option/.
- extensions
Character vector of extensions to load (e.g.,
c("Buttons", "Select")). Auto-detected fromoptionswhenNULL.- width, height
CSS dimensions.
- elementId
Optional HTML element ID.
Examples
# Just works — beautiful defaults
dt2(iris)
# Override style inline
dt2(iris, striped = FALSE)
dt2(iris, font_scale = 0.85, compact = FALSE)
# Theme presets
dt2(iris, theme = "minimal")
dt2(iris, theme = "compact")
# Reusable theme
my_theme <- dt2_theme("clean", compact = TRUE)
dt2(iris, theme = my_theme)
# Override a preset
dt2(iris, theme = "minimal", striped = TRUE)
# CSS class override (power users)
dt2(iris, class = "table table-bordered table-dark")
# DataTables options (separate from styling)
dt2(iris, options = list(pageLength = 5, searching = FALSE))
# Disable responsive (fixed-width columns)
dt2(iris, responsive = FALSE)
# Everything composes
dt2(mtcars,
theme = "clean",
compact = TRUE,
options = list(pageLength = 25))
# Buttons
dt2(mtcars, options = list(
buttons = list("copy", "csv", "excel"),
layout = list(topEnd = "buttons")
))
# Custom button style
dt2(mtcars,
button_class = "btn btn-sm btn-primary",
options = list(
buttons = list("copy", "csv", "excel"),
layout = list(topEnd = "buttons")
))
