The set-level counterpart to mask(). Takes a folder of tabular
files, an Excel workbook, or a named list of data frames and produces
one synthetic table per input table plus a single private recipe
bundle. Columns that are shared across tables - a site code, a
genotype name, a plot id appearing in several tables - are aliased
identically everywhere they occur, so a join written against the
synthetic set still resolves on the masked data.
Arguments
- input
A folder path, an
.xlsx/.xlspath, or a named list of data frames - anythingread_set()accepts.- roles
Optional named list of roles tables, one per input table (names must match). When
NULL(default),propose_roles()runs on each table for the chosenmode. Supply edited tables for full control.- links
Optional override for link detection: a character vector of column names to treat as cross-table links, or
FALSEto disable linking entirely (each table masked independently). WhenNULL(default), links are detected automatically.- mode
Either
"local"or"collaborate". When omitted androlesare supplied, inherit their common mode. Tables prepared for different modes must be reconciled explicitly. Otherwise default to"local".- seed
Optional integer for reproducibility.
- clean
Hygiene mode passed to
clean_table()for every table ("auto","report", or"off").- alias_names
Hide column names.
FALSE(default) keeps them;TRUEaliases every non-link column (linked join keys keep their names so the synthetic set stays joinable).- conditional
Logical scalar (default
FALSE). Passed through to each per-tablemask()call: whenTRUE, every table's numeric block is re-simulated within its own treatment-by-design strata so the treatment-to-outcome relationship survives the clone. Seemask()for the full account.- quiet
Logical; suppress the link / hygiene report.
Value
A masque_set S7 object. Use synthetic() for the named list
of synthetic tables and recipe() for the private recipe bundle.
Links
A link is a column name that appears in two or more tables with a
compatible kind and overlapping values - the join keys of the set.
mask_set() proposes links automatically and prints them; pass
links to override. Linked columns are aliased in place with a shared
map (built over the union of values across all tables), so identical
original values map to identical aliases in every table. Set a linked
column's action to keep in its roles table to pass it through
unmasked instead.
Examples
tables <- list(
plots = data.frame(
site = c("A", "A", "B", "B"),
gen = c("x", "y", "x", "y"),
yield = c(3.1, 2.9, 4.0, 3.7)
),
sites = data.frame(
site = c("A", "B"),
rainfall = c(420, 560)
)
)
m <- mask_set(tables, mode = "collaborate", seed = 1, quiet = TRUE)
synthetic(m)$plots$site
#> [1] "A" "A" "B" "B"
synthetic(m)$sites$site # same aliases -> the join still works
#> [1] "A" "B"