Skip to contents

These are internal methods that are documented only to satisfy R CMD check. End users should pay no attention to this documentation.

Usage

# S4 method for SplitVector
c(x, ...)

split_rows(lyt = NULL, spl, pos, cmpnd_fun = AnalyzeMultiVars)

# S4 method for `NULL`
split_rows(lyt = NULL, spl, pos, cmpnd_fun = AnalyzeMultiVars)

# S4 method for PreDataRowLayout
split_rows(lyt = NULL, spl, pos, cmpnd_fun = AnalyzeMultiVars)

# S4 method for SplitVector
split_rows(lyt = NULL, spl, pos, cmpnd_fun = AnalyzeMultiVars)

# S4 method for PreDataTableLayouts
split_rows(lyt, spl, pos)

# S4 method for ANY
split_rows(lyt, spl, pos)

cmpnd_last_rowsplit(lyt, spl, constructor)

# S4 method for `NULL`
cmpnd_last_rowsplit(lyt, spl, constructor)

# S4 method for PreDataRowLayout
cmpnd_last_rowsplit(lyt, spl, constructor)

# S4 method for SplitVector
cmpnd_last_rowsplit(lyt, spl, constructor)

# S4 method for PreDataTableLayouts
cmpnd_last_rowsplit(lyt, spl, constructor)

# S4 method for ANY
cmpnd_last_rowsplit(lyt, spl, constructor)

split_cols(lyt = NULL, spl, pos)

# S4 method for `NULL`
split_cols(lyt = NULL, spl, pos)

# S4 method for PreDataColLayout
split_cols(lyt = NULL, spl, pos)

# S4 method for SplitVector
split_cols(lyt = NULL, spl, pos)

# S4 method for PreDataTableLayouts
split_cols(lyt = NULL, spl, pos)

# S4 method for ANY
split_cols(lyt = NULL, spl, pos)

.add_row_summary(
  lyt,
  label,
  cfun,
  child_labels = c("default", "visible", "hidden"),
  cformat = NULL,
  cna_str = "-",
  indent_mod = 0L,
  cvar = "",
  extra_args = list()
)

# S4 method for PreDataTableLayouts
.add_row_summary(
  lyt,
  label,
  cfun,
  child_labels = c("default", "visible", "hidden"),
  cformat = NULL,
  cna_str = "-",
  indent_mod = 0L,
  cvar = "",
  extra_args = list()
)

# S4 method for PreDataRowLayout
.add_row_summary(
  lyt,
  label,
  cfun,
  child_labels = c("default", "visible", "hidden"),
  cformat = NULL,
  cna_str = "-",
  indent_mod = 0L,
  cvar = "",
  extra_args = list()
)

# S4 method for SplitVector
.add_row_summary(
  lyt,
  label,
  cfun,
  child_labels = c("default", "visible", "hidden"),
  cformat = NULL,
  cna_str = "-",
  indent_mod = 0L,
  cvar = "",
  extra_args = list()
)

# S4 method for Split
.add_row_summary(
  lyt,
  label,
  cfun,
  child_labels = c("default", "visible", "hidden"),
  cformat = NULL,
  cna_str = "-",
  indent_mod = 0L,
  cvar = "",
  extra_args = list()
)

fix_dyncuts(spl, df)

# S4 method for Split
fix_dyncuts(spl, df)

# S4 method for VarDynCutSplit
fix_dyncuts(spl, df)

# S4 method for VTableTree
fix_dyncuts(spl, df)

# S4 method for PreDataRowLayout
fix_dyncuts(spl, df)

# S4 method for PreDataColLayout
fix_dyncuts(spl, df)

# S4 method for SplitVector
fix_dyncuts(spl, df)

# S4 method for PreDataTableLayouts
fix_dyncuts(spl, df)

summarize_rows_inner(obj, depth = 0, indent = 0)

# S4 method for TableTree
summarize_rows_inner(obj, depth = 0, indent = 0)

# S4 method for ElementaryTable
summarize_rows_inner(obj, depth = 0, indent = 0)

# S4 method for TableRow
summarize_rows_inner(obj, depth = 0, indent = 0)

# S4 method for LabelRow
summarize_rows_inner(obj, depth = 0, indent = 0)

table_structure_inner(obj, depth = 0, indent = 0, print_indent = 0)

str(object, ...)

# S4 method for VTableTree
str(object, max.level = 3L, ...)

# S4 method for TableTree
table_structure_inner(obj, depth = 0, indent = 0, print_indent = 0)

# S4 method for ElementaryTable
table_structure_inner(obj, depth = 0, indent = 0, print_indent = 0)

# S4 method for TableRow
table_structure_inner(obj, depth = 0, indent = 0, print_indent = 0)

# S4 method for LabelRow
table_structure_inner(obj, depth = 0, indent = 0, print_indent = 0)

# S4 method for TableRow
nrow(x)

# S4 method for TableRow
ncol(x)

# S4 method for LabelRow
ncol(x)

# S4 method for InstantiatedColumnInfo
ncol(x)

# S4 method for VTree
tree_children(x)

# S4 method for VTableTree
tree_children(x)

# S4 method for ANY
tree_children(x)

# S4 method for VTree
tree_children(x) <- value

# S4 method for VTableTree
tree_children(x) <- value

# S4 method for TableTree
content_table(obj)

# S4 method for ANY
content_table(obj)

# S4 method for TableTree,ElementaryTable
content_table(obj) <- value

next_rpos(obj, nested = TRUE, for_analyze = FALSE)

# S4 method for PreDataTableLayouts
next_rpos(obj, nested = TRUE, for_analyze = FALSE)

# S4 method for PreDataRowLayout
next_rpos(obj, nested = TRUE, for_analyze = FALSE)

# S4 method for ANY
next_rpos(obj, nested)

next_cpos(obj, nested = TRUE)

# S4 method for PreDataTableLayouts
next_cpos(obj, nested = TRUE)

# S4 method for PreDataColLayout
next_cpos(obj, nested = TRUE)

# S4 method for ANY
next_cpos(obj, nested = TRUE)

last_rowsplit(obj)

# S4 method for `NULL`
last_rowsplit(obj)

# S4 method for SplitVector
last_rowsplit(obj)

# S4 method for PreDataRowLayout
last_rowsplit(obj)

# S4 method for PreDataTableLayouts
last_rowsplit(obj)

rlayout(obj)

# S4 method for PreDataTableLayouts
rlayout(obj)

# S4 method for ANY
rlayout(obj)

rlayout(object) <- value

# S4 method for PreDataTableLayouts
rlayout(object) <- value

tree_pos(obj)

# S4 method for VLayoutNode
tree_pos(obj)

pos_subset(obj)

# S4 method for TreePos
pos_subset(obj)

# S4 method for VLayoutNode
pos_subset(obj)

pos_splits(obj)

# S4 method for TreePos
pos_splits(obj)

# S4 method for VLayoutNode
pos_splits(obj)

pos_splvals(obj)

# S4 method for TreePos
pos_splvals(obj)

# S4 method for VLayoutNode
pos_splvals(obj)

pos_splval_labels(obj)

# S4 method for TreePos
pos_splval_labels(obj)

spl_payload(obj)

# S4 method for Split
spl_payload(obj)

spl_payload(obj) <- value

# S4 method for Split
spl_payload(obj) <- value

spl_label_var(obj)

# S4 method for VarLevelSplit
spl_label_var(obj)

# S4 method for Split
spl_label_var(obj)

tt_labelrow(obj)

# S4 method for VTableTree
tt_labelrow(obj)

tt_labelrow(obj) <- value

# S4 method for VTableTree,LabelRow
tt_labelrow(obj) <- value

labelrow_visible(obj)

# S4 method for VTableTree
labelrow_visible(obj)

# S4 method for LabelRow
labelrow_visible(obj)

# S4 method for VAnalyzeSplit
labelrow_visible(obj)

labelrow_visible(obj) <- value

# S4 method for VTableTree
labelrow_visible(obj) <- value

# S4 method for LabelRow
labelrow_visible(obj) <- value

# S4 method for VAnalyzeSplit
labelrow_visible(obj) <- value

label_kids(spl)

# S4 method for Split
label_kids(spl)

label_kids(spl) <- value

# S4 method for Split,character
label_kids(spl) <- value

# S4 method for Split,logical
label_kids(spl) <- value

vis_label(spl)

# S4 method for Split
vis_label(spl)

label_position(spl)

# S4 method for Split
label_position(spl)

# S4 method for VAnalyzeSplit
label_position(spl)

label_position(spl) <- value

# S4 method for Split
label_position(spl) <- value

content_fun(obj)

# S4 method for Split
content_fun(obj)

content_fun(object) <- value

# S4 method for Split
content_fun(object) <- value

analysis_fun(obj)

# S4 method for AnalyzeVarSplit
analysis_fun(obj)

# S4 method for AnalyzeColVarSplit
analysis_fun(obj)

split_fun(obj)

# S4 method for CustomizableSplit
split_fun(obj)

# S4 method for Split
split_fun(obj)

split_fun(obj) <- value

# S4 method for CustomizableSplit
split_fun(obj) <- value

# S4 method for Split
split_fun(obj) <- value

content_extra_args(obj)

# S4 method for Split
content_extra_args(obj)

content_extra_args(object) <- value

# S4 method for Split
content_extra_args(object) <- value

content_var(obj)

# S4 method for Split
content_var(obj)

content_var(object) <- value

# S4 method for Split
content_var(object) <- value

avar_inclNAs(obj)

# S4 method for VAnalyzeSplit
avar_inclNAs(obj)

avar_inclNAs(obj) <- value

# S4 method for VAnalyzeSplit
avar_inclNAs(obj) <- value

spl_labelvar(obj)

# S4 method for VarLevelSplit
spl_labelvar(obj)

spl_child_order(obj)

# S4 method for VarLevelSplit
spl_child_order(obj)

spl_child_order(obj) <- value

# S4 method for VarLevelSplit
spl_child_order(obj) <- value

# S4 method for ManualSplit
spl_child_order(obj)

# S4 method for MultiVarSplit
spl_child_order(obj)

# S4 method for AllSplit
spl_child_order(obj)

# S4 method for VarStaticCutSplit
spl_child_order(obj)

root_spl(obj)

# S4 method for PreDataAxisLayout
root_spl(obj)

root_spl(obj) <- value

# S4 method for PreDataAxisLayout
root_spl(obj) <- value

spanned_values(obj)

# S4 method for TableRow
spanned_values(obj)

# S4 method for LabelRow
spanned_values(obj)

spanned_cells(obj)

# S4 method for TableRow
spanned_cells(obj)

# S4 method for LabelRow
spanned_cells(obj)

spanned_values(obj) <- value

# S4 method for TableRow
spanned_values(obj) <- value

# S4 method for LabelRow
spanned_values(obj) <- value

# S4 method for CellValue
obj_na_str(obj) <- value

# S4 method for VTableNodeInfo
obj_na_str(obj) <- value

# S4 method for Split
obj_na_str(obj) <- value

# S4 method for VTableNodeInfo
obj_na_str(obj)

set_format_recursive(obj, format, na_str, override = FALSE)

# S4 method for TableRow
set_format_recursive(obj, format, na_str, override = FALSE)

# S4 method for LabelRow
set_format_recursive(obj, format, override = FALSE)

content_format(obj)

# S4 method for Split
content_format(obj)

content_format(obj) <- value

# S4 method for Split
content_format(obj) <- value

content_na_str(obj)

# S4 method for Split
content_na_str(obj)

content_na_str(obj) <- value

# S4 method for Split
content_na_str(obj) <- value

# S4 method for TableTree
collect_leaves(tt, incl.cont = TRUE, add.labrows = FALSE)

# S4 method for ElementaryTable
collect_leaves(tt, incl.cont = TRUE, add.labrows = FALSE)

# S4 method for VTree
collect_leaves(tt, incl.cont = TRUE, add.labrows = FALSE)

# S4 method for VLeaf
collect_leaves(tt, incl.cont = TRUE, add.labrows = FALSE)

# S4 method for `NULL`
collect_leaves(tt, incl.cont = TRUE, add.labrows = FALSE)

# S4 method for ANY
collect_leaves(tt, incl.cont = TRUE, add.labrows = FALSE)

row_cspans(obj)

# S4 method for TableRow
row_cspans(obj)

# S4 method for LabelRow
row_cspans(obj)

row_cspans(obj) <- value

# S4 method for TableRow
row_cspans(obj) <- value

# S4 method for LabelRow
row_cspans(obj) <- value

cell_cspan(obj)

# S4 method for CellValue
cell_cspan(obj)

cell_cspan(obj) <- value

# S4 method for CellValue
cell_cspan(obj) <- value

cell_align(obj)

# S4 method for CellValue
cell_align(obj)

cell_align(obj) <- value

# S4 method for CellValue
cell_align(obj) <- value

tt_level(obj)

# S4 method for VNodeInfo
tt_level(obj)

tt_level(obj) <- value

# S4 method for VNodeInfo
tt_level(obj) <- value

# S4 method for VTableTree
tt_level(obj) <- value

indent_mod(obj)

# S4 method for Split
indent_mod(obj)

# S4 method for VTableNodeInfo
indent_mod(obj)

# S4 method for ANY
indent_mod(obj)

# S4 method for RowsVerticalSection
indent_mod(obj)

indent_mod(obj) <- value

# S4 method for Split
indent_mod(obj) <- value

# S4 method for VTableNodeInfo
indent_mod(obj) <- value

# S4 method for CellValue
indent_mod(obj) <- value

# S4 method for RowsVerticalSection
indent_mod(obj) <- value

content_indent_mod(obj)

# S4 method for Split
content_indent_mod(obj)

# S4 method for VTableNodeInfo
content_indent_mod(obj)

content_indent_mod(obj) <- value

# S4 method for Split
content_indent_mod(obj) <- value

# S4 method for VTableNodeInfo
content_indent_mod(obj) <- value

rawvalues(obj)

# S4 method for ValueWrapper
rawvalues(obj)

# S4 method for LevelComboSplitValue
rawvalues(obj)

# S4 method for list
rawvalues(obj)

# S4 method for ANY
rawvalues(obj)

# S4 method for CellValue
rawvalues(obj)

# S4 method for TreePos
rawvalues(obj)

# S4 method for RowsVerticalSection
rawvalues(obj)

value_names(obj)

# S4 method for ANY
value_names(obj)

# S4 method for TreePos
value_names(obj)

# S4 method for list
value_names(obj)

# S4 method for ValueWrapper
value_names(obj)

# S4 method for LevelComboSplitValue
value_names(obj)

# S4 method for RowsVerticalSection
value_names(obj)

value_labels(obj)

# S4 method for ANY
value_labels(obj)

# S4 method for TreePos
value_labels(obj)

# S4 method for list
value_labels(obj)

# S4 method for RowsVerticalSection
value_labels(obj)

# S4 method for ValueWrapper
value_labels(obj)

# S4 method for LevelComboSplitValue
value_labels(obj)

# S4 method for MultiVarSplit
value_labels(obj)

spl_varlabels(obj)

# S4 method for MultiVarSplit
spl_varlabels(obj)

spl_varlabels(object) <- value

# S4 method for MultiVarSplit
spl_varlabels(object) <- value

splv_extra(obj)

# S4 method for SplitValue
splv_extra(obj)

splv_extra(obj) <- value

# S4 method for SplitValue
splv_extra(obj) <- value

split_exargs(obj)

# S4 method for Split
split_exargs(obj)

split_exargs(obj) <- value

# S4 method for Split
split_exargs(obj) <- value

col_extra_args(obj, df = NULL)

# S4 method for InstantiatedColumnInfo
col_extra_args(obj, df = NULL)

# S4 method for PreDataTableLayouts
col_extra_args(obj, df = NULL)

# S4 method for PreDataColLayout
col_extra_args(obj, df = NULL)

# S4 method for LayoutColTree
col_extra_args(obj, df = NULL)

# S4 method for LayoutColLeaf
col_extra_args(obj, df = NULL)

disp_ccounts(obj)

# S4 method for VTableTree
disp_ccounts(obj)

# S4 method for InstantiatedColumnInfo
disp_ccounts(obj)

# S4 method for PreDataTableLayouts
disp_ccounts(obj)

# S4 method for PreDataColLayout
disp_ccounts(obj)

disp_ccounts(obj) <- value

# S4 method for VTableTree
disp_ccounts(obj) <- value

# S4 method for InstantiatedColumnInfo
disp_ccounts(obj) <- value

# S4 method for PreDataColLayout
disp_ccounts(obj) <- value

# S4 method for LayoutColTree
disp_ccounts(obj) <- value

# S4 method for PreDataTableLayouts
disp_ccounts(obj) <- value

colcount_format(obj)

# S4 method for InstantiatedColumnInfo
colcount_format(obj)

# S4 method for VTableNodeInfo
colcount_format(obj)

# S4 method for PreDataColLayout
colcount_format(obj)

# S4 method for PreDataTableLayouts
colcount_format(obj)

colcount_format(obj) <- value

# S4 method for InstantiatedColumnInfo
colcount_format(obj) <- value

# S4 method for VTableNodeInfo
colcount_format(obj) <- value

# S4 method for PreDataColLayout
colcount_format(obj) <- value

# S4 method for PreDataTableLayouts
colcount_format(obj) <- value

# S4 method for TableRow
as.vector(x, mode = "any")

# S4 method for ElementaryTable
as.vector(x, mode = "any")

spl_cuts(obj)

# S4 method for VarStaticCutSplit
spl_cuts(obj)

spl_cutlabels(obj)

# S4 method for VarStaticCutSplit
spl_cutlabels(obj)

spl_cutfun(obj)

# S4 method for VarDynCutSplit
spl_cutfun(obj)

spl_cutlabelfun(obj)

# S4 method for VarDynCutSplit
spl_cutlabelfun(obj)

spl_is_cmlcuts(obj)

# S4 method for VarDynCutSplit
spl_is_cmlcuts(obj)

spl_varnames(obj)

# S4 method for MultiVarSplit
spl_varnames(obj)

spl_varnames(object) <- value

# S4 method for MultiVarSplit
spl_varnames(object) <- value

# S4 method for TableRow
row_footnotes(obj)

# S4 method for RowsVerticalSection
row_footnotes(obj)

# S4 method for TableRow
row_footnotes(obj) <- value

# S4 method for VTableTree
row_footnotes(obj)

# S4 method for CellValue
cell_footnotes(obj)

# S4 method for TableRow
cell_footnotes(obj)

# S4 method for LabelRow
cell_footnotes(obj)

# S4 method for VTableTree
cell_footnotes(obj)

# S4 method for CellValue
cell_footnotes(obj) <- value

# S4 method for DataRow
cell_footnotes(obj) <- value

# S4 method for ContentRow
cell_footnotes(obj) <- value

# S4 method for ANY
col_fnotes_here(obj) <- value

# S4 method for LayoutColTree
col_footnotes(obj)

# S4 method for LayoutColLeaf
col_footnotes(obj)

# S4 method for LayoutColTree
col_footnotes(obj) <- value

# S4 method for LayoutColLeaf
col_footnotes(obj) <- value

# S4 method for VTableTree
col_footnotes(obj)

# S4 method for RefFootnote
ref_index(obj)

# S4 method for RefFootnote
ref_index(obj) <- value

# S4 method for RefFootnote
ref_symbol(obj)

# S4 method for RefFootnote
ref_symbol(obj) <- value

# S4 method for RefFootnote
ref_msg(obj)

# S4 method for VTableTree,character
fnotes_at_path(obj, rowpath = NULL, colpath = NULL, reset_idx = TRUE) <- value

# S4 method for VTableTree,`NULL`
fnotes_at_path(obj, rowpath = NULL, colpath = NULL, reset_idx = TRUE) <- value

# S4 method for VTableNodeInfo,missing
rbind2(x, y)

# S4 method for VTableTree
tt_at_path(tt, path, ...)

# S4 method for VTableTree,ANY,VTableTree
tt_at_path(tt, path, ...) <- value

# S4 method for VTableTree,ANY,`NULL`
tt_at_path(tt, path, ...) <- value

# S4 method for VTableTree,ANY,TableRow
tt_at_path(tt, path, ...) <- value

# S4 method for VTableTree,ANY,ANY,CellValue
[(x, i, j, ...) <- value

# S4 method for VTableTree,logical,ANY
[(x, i, j, ..., drop = FALSE)

# S4 method for VTableTree,logical,missing
[(x, i, j, ..., drop = FALSE)

# S4 method for VTableTree,ANY,logical
[(x, i, j, ..., drop = FALSE)

# S4 method for VTableTree,ANY,missing
[(x, i, j, ..., drop = FALSE)

# S4 method for VTableTree,missing,ANY
[(x, i, j, ..., drop = FALSE)

# S4 method for VTableTree,ANY,character
[(x, i, j, ..., drop = FALSE)

# S4 method for VTableTree,character,ANY
[(x, i, j, ..., drop = FALSE)

# S4 method for VTableTree,character,character
[(x, i, j, ..., drop = FALSE)

# S4 method for VTableTree,missing,numeric
[(x, i, j, ..., drop = FALSE)

# S4 method for VTableTree,numeric,numeric
[(x, i, j, ..., drop = FALSE)

# S4 method for VTableTree
cell_values(tt, rowpath = NULL, colpath = NULL, omit_labrows = TRUE)

# S4 method for TableRow
cell_values(tt, rowpath = NULL, colpath = NULL, omit_labrows = TRUE)

# S4 method for LabelRow
cell_values(tt, rowpath = NULL, colpath = NULL, omit_labrows = TRUE)

# S4 method for TableRow
value_at(tt, rowpath = NULL, colpath = NULL)

# S4 method for LabelRow
value_at(tt, rowpath = NULL, colpath = NULL)

# S4 method for VTableTree
print(x, ...)

# S4 method for VTableTree
show(object)

Arguments

x

The object.

...

Splits or SplitVector objects

lyt

layout object pre-data used for tabulation

spl

Split. The split.

pos

numeric(1). Intended for internal use.

cmpnd_fun

function. Intended for internal use.

constructor

function.

label

character(1). A label (not to be confused with the name) for the object/structure.

cfun

list/function/NULL. tabulation function(s) for creating content rows. Must accept x or df as first parameter. Must accept labelstr as the second argument. Can optionally accept all optional arguments accepted by analysis functions. See analyze.

child_labels

string. One of "default", "visible", "hidden". What should the display behavior be for the labels (i.e. label rows) of the children of this split. Defaults to "default" which flags the label row as visible only if the child has 0 content rows.

cformat

format spec. Format for content rows

cna_str

character. NA string for use with cformat for content table.

indent_mod

numeric. Modifier for the default indent position for the structure created by this function(subtable, content table, or row) and all of that structure's children. Defaults to 0, which corresponds to the unmodified default behavior.

cvar

character(1). The variable, if any, which the content function should accept. Defaults to NA.

extra_args

list. Extra arguments to be passed to the tabulation function. Element position in the list corresponds to the children of this split. Named elements in the child-specific lists are ignored if they do not match a formal argument of the tabulation function.

df

dataset (data.frame or tibble)

obj

The object.

depth

depth in tree

indent

indent

print_indent

indent for print

object

a table object

max.level

numeric(1). Passed to utils::str. Defaults to 3 for the VTableTree method, unlike the underlying default of NA. NA is not appropriate for VTableTree objects.

value

The new value

nested

boolean. Should this layout instruction be applied within the existing layout structure if possible (TRUE, the default) or as a new top-level element (`FALSE). Ignored if it would nest a split underneath analyses, which is not allowed.

for_analyze

logical(1).

format

FormatSpec. Format associated with this split. Formats can be declared via strings ("xx.x") or function. In cases such as analyze calls, they can character vectors or lists of functions.

na_str

character(1). String that should be displayed when the value of x is missing. Defaults to "NA".

override

logical(1).

tt

TableTree (or related class). A TableTree object representing a populated table.

incl.cont

logical. Include rows from content tables within the tree. Defaults to TRUE

add.labrows

logical. Include label rows. Defaults to FALSE

mode

character(1). Passed on to as.vector

rowpath

character or NULL. Path within row structure. NULL indicates the footnote should go on the column rather than cell.

colpath

character or NULL. Path within column structure. NULL indicates footnote should go on the row rather than cell

reset_idx

logical(1). Should the numbering for referential footnotes be immediately recalculated. Defaults to TRUE.

y

Second element to be rbound via rbind2

path

character. A vector path for a position within the structure of a tabletree. Each element represents a subsequent choice amongst the children of the previous choice.

i

index

j

index

drop

logical(1). Should the value in the cell be returned if one cell is selected by the combination of i and j. It is not possible to return a vector of values. To do so please consider using cell_values(). Defaults to FALSE.

Value

Various, but should be considered implementation details.

Examples


library(dplyr)

iris2 <- iris %>%
  group_by(Species) %>%
  mutate(group = as.factor(rep_len(c("a", "b"), length.out = n()))) %>%
  ungroup()

lyt <- basic_table() %>%
  split_cols_by("Species") %>%
  split_cols_by("group") %>%
  analyze(c("Sepal.Length", "Petal.Width"),
    afun = list_wrap_x(summary),
    format = "xx.xx"
  )

tbl <- build_table(lyt, iris2)

indent_mod(tbl)
#> [1] 0
indent_mod(tbl) <- 1L
tbl
#>                    setosa       versicolor      virginica  
#>                   a      b       a       b       a      b  
#> ———————————————————————————————————————————————————————————
#>   Sepal.Length                                             
#>     Min.         4.40   4.30   5.00    4.90    4.90    5.60
#>     1st Qu.      4.80   4.80   5.60    5.60    6.20    6.30
#>     Median       5.00   5.00   5.90    5.90    6.50    6.50
#>     Mean         5.02   4.99   5.99    5.88    6.50    6.67
#>     3rd Qu.      5.30   5.10   6.40    6.10    6.70    7.20
#>     Max.         5.80   5.70   7.00    6.70    7.70    7.90
#>   Petal.Width                                              
#>     Min.         0.10   0.10   1.00    1.00    1.40    1.50
#>     1st Qu.      0.20   0.20   1.20    1.20    1.90    1.80
#>     Median       0.20   0.20   1.30    1.30    2.10    2.00
#>     Mean         0.23   0.26   1.35    1.30    2.08    1.98
#>     3rd Qu.      0.20   0.30   1.50    1.40    2.30    2.20
#>     Max.         0.40   0.60   1.80    1.70    2.50    2.50