This helper function attempts to find blocks of variables in the
specification of the `formulas`

and/or `predictorMatrix`

objects. Blocks specified by `formulas`

may consist of
multiple variables. Blocks specified by `predictorMatrix`

are
assumed to consist of single variables. Any duplicates in names are
removed, and the formula specification is preferred.
`predictorMatrix`

and `formulas`

. When both arguments
specify models for the same block, the model for the
`predictMatrix`

is removed, and priority is given to the
specification given in `formulas`

.

## Arguments

- formulas
A named list of formula's, or expressions that can be converted into formula's by

`as.formula`

. List elements correspond to blocks. The block to which the list element applies is identified by its name, so list names must correspond to block names. The`formulas`

argument is an alternative to the`predictorMatrix`

argument that allows for more flexibility in specifying imputation models, e.g., for specifying interaction terms.- predictorMatrix
A numeric matrix of

`length(blocks)`

rows and`ncol(data)`

columns, containing 0/1 data specifying the set of predictors to be used for each target column. Each row corresponds to a variable block, i.e., a set of variables to be imputed. A value of`1`

means that the column variable is used as a predictor for the target block (in the rows). By default, the`predictorMatrix`

is a square matrix of`ncol(data)`

rows and columns with all 1's, except for the diagonal. Note: For two-level imputation models (which have`"2l"`

in their names) other codes (e.g,`2`

or`-2`

) are also allowed.

## Examples

```
form <- list(bmi + hyp ~ chl + age, chl ~ bmi)
pred <- make.predictorMatrix(nhanes[, c("age", "chl")])
construct.blocks(formulas = form, pred = pred)
#> $F1
#> [1] "bmi" "hyp"
#>
#> $chl
#> [1] "chl"
#>
#> $age
#> [1] "age"
#>
#> attr(,"calltype")
#> F1 chl age
#> "formula" "formula" "pred"
```