Basic Usage
To create aggrid table, use aggrid()
on a data frame or
matrix.
Column Properties
Columns: Width
For column width adjustment, you can use ag_col_def()
or
ag_col_width()
.
aggrid(iris) |>
ag_col_def(columns = c(Sepal.Length, Sepal.Width), width = 80)
aggrid(iris) |>
ag_col_width(c(Sepal.Length, Sepal.Width), width = 80)
Size Columns to Fit
If you don’t want a particular column to be included in the auto
resize, you can use size_to_fit()
. For example, you want
the first column to remain fixed width, but all other columns to fill
the width of the table.
iris |>
dplyr::relocate(Species) |>
aggrid() |>
ag_col_width(Species, width = 400) |>
ag_size_fit()
Auto-Size Columns
Auto width to fit the contents of the cells in the column.
aggrid(iris) |>
ag_size_columns()
More options please see https://www.ag-grid.com/javascript-data-grid/column-properties.
Columns: filter
aggrid()
default set columns filter, and automatically
identify the data type to select filter mode. If you want to change the
default behavior, please use ag_col_filter()
.
aggrid(iris) |>
ag_col_filter(Sepal.Length, filter = FALSE) |>
ag_col_filter(Species, filter = "agTextColumnFilter")
More options please see https://www.ag-grid.com/javascript-data-grid/filter-text/.
Columns: pinned
aggrid(iris) |>
ag_col_pinned(Species, pinned = "left")
Columns: Header
By default, aggrid()
will remove colnames dots, use
ag_col_header()
can custom colnames.
aggrid(iris) |>
ag_col_header(Sepal.Length, headerName = c("Sepal.Length")) |>
ag_col_header(Sepal.Width, headerName = c("Sepal.Width"))
The above code is bad, you can use ag_col_defs()
for
vectorization.
aggrid(iris) |>
ag_col_defs(columns = everything(), headerName = names(iris))
menuTabs
parameter default is
c('filterMenuTab','generalMenuTab','columnsMenuTab')
, If
you only want to filter menuTab, you can:
head(iris, n = 10) |>
aggrid() |>
ag_col_def(columns = Species, menuTabs = list("filterMenuTab"))
Columns: group
head(iris, n = 10) |>
aggrid() |>
ag_col_group(columns = starts_with("Sepal"), headerName = "Sepal")
Center header:
head(iris, n = 10) |>
aggrid() |>
ag_col_group(columns = starts_with("Sepal"), headerName = "Sepal", headerClass = "ag-header-center") |>
ag_col_group(columns = starts_with("Petal"), headerName = "Petal", headerClass = "ag-header-center")
Set all content content center:
head(iris, n = 10) |>
aggrid() |>
ag_col_group(columns = starts_with("Sepal"), headerName = "Sepal", headerClass = "ag-header-center") |>
ag_col_group(columns = starts_with("Petal"), headerName = "Petal", headerClass = "ag-header-center") |>
ag_col_def(cellStyle = list(textAlign = "center"), headerClass = "ag-header-center")
Columns: format
ag_col_format()
use numeraljs to format number.
data.frame(
price = c(9603.01, 100, 98322),
percent = c(0.9525556, 0.5, 0.112),
exponential = c(123456789, 0.0001314, 0.52),
bytes = c(1024^3, 1024^2, 1024)
) |>
aggrid() |>
ag_col_format(price, "$0,0.000") |>
ag_col_format(percent, "0.0%") |>
ag_col_format(exponential, "0,0e+0") |>
ag_col_format(bytes, "0 b")
Custom columns format use valueFormatter
:
data.frame(
Area = c(1000, 200, 40)
) |>
aggrid() |>
ag_col_def(valueFormatter = JS('
(params) => {return params.value + " mi\u00b2";};
'))
Coulmns: CellRender
valueFormatter
mainly used for formatting, and
cellRenderer
use for adding html tags and
cellStyle
use for cell style.
data.frame(
go_term = c("GO:0140359", "GO:0036094", "GO:0048029", "GO:0042626", "GO:0097367"),
p_value = c(3.30e-07, 1.60473e-06, 2.47191e-01, 1.19e-05, 0.05)
) |>
aggrid() |>
ag_col_render(go_term, cellRenderer = JS('(params) => {
return `<a href="https://amigo.geneontology.org/amigo/term/${params.value}">${params.value}</a>`
};')) |>
ag_col_render(p_value, cellStyle = JS('function(params) {
if (params.value <= 0.05) {
return { color: "green" };
} else{
return { color: "red" };
}
}'))
TO DO: need to encapsulate some simple functions to modify the cellRender.
More example to see <./Examples2.html>