Returns a list with the names of all variables, including response value and random effects.

## Arguments

- x
A fitted model.

- effects
Should variables for fixed effects, random effects or both be returned? Only applies to mixed models. May be abbreviated.

- component
Should all predictor variables, predictor variables for the conditional model, the zero-inflated part of the model, the dispersion term or the instrumental variables be returned? Applies to models with zero-inflated and/or dispersion formula, or to models with instrumental variable (so called fixed-effects regressions). May be abbreviated. Note that the

*conditional*component is also called*count*or*mean*component, depending on the model.- flatten
Logical, if

`TRUE`

, the values are returned as character vector, not as list. Duplicated values are removed.- verbose
Toggle warnings.

## Value

A list with (depending on the model) following elements (character vectors):

`response`

, the name of the response variable`conditional`

, the names of the predictor variables from the*conditional*model (as opposed to the zero-inflated part of a model)`cluster`

, the names of cluster or grouping variables`dispersion`

, the name of the dispersion terms`instruments`

, the names of instrumental variables`random`

, the names of the random effects (grouping factors)`zero_inflated`

, the names of the predictor variables from the*zero-inflated*part of the model`zero_inflated_random`

, the names of the random effects (grouping factors)

## Note

The difference to `find_terms()`

is that
`find_variables()`

returns each variable name only once, while
`find_terms()`

may return a variable multiple times in case of
transformations or when arithmetic expressions were used in the formula.

## Model components

Possible values for the `component`

argument depend on the model class.
Following are valid options:

`"all"`

: returns all model components, applies to all models, but will only have an effect for models with more than just the conditional model component.`"conditional"`

: only returns the conditional component, i.e. "fixed effects" terms from the model. Will only have an effect for models with more than just the conditional model component.`"smooth_terms"`

: returns smooth terms, only applies to GAMs (or similar models that may contain smooth terms).`"zero_inflated"`

(or`"zi"`

): returns the zero-inflation component.`"dispersion"`

: returns the dispersion model component. This is common for models with zero-inflation or that can model the dispersion parameter.`"instruments"`

: for instrumental-variable or some fixed effects regression, returns the instruments.`"location"`

: returns location parameters such as`conditional`

,`zero_inflated`

,`smooth_terms`

, or`instruments`

(everything that are fixed or random effects - depending on the`effects`

argument - but no auxiliary parameters).`"distributional"`

(or`"auxiliary"`

): components like`sigma`

,`dispersion`

,`beta`

or`precision`

(and other auxiliary parameters) are returned.

## Examples

```
data(cbpp, package = "lme4")
data(sleepstudy, package = "lme4")
# some data preparation...
cbpp$trials <- cbpp$size - cbpp$incidence
sleepstudy$mygrp <- sample(1:5, size = 180, replace = TRUE)
sleepstudy$mysubgrp <- NA
for (i in 1:5) {
filter_group <- sleepstudy$mygrp == i
sleepstudy$mysubgrp[filter_group] <-
sample(1:30, size = sum(filter_group), replace = TRUE)
}
m1 <- lme4::glmer(
cbind(incidence, size - incidence) ~ period + (1 | herd),
data = cbpp,
family = binomial
)
find_variables(m1)
#> $response
#> [1] "incidence" "size"
#>
#> $conditional
#> [1] "period"
#>
#> $random
#> [1] "herd"
#>
m2 <- lme4::lmer(
Reaction ~ Days + (1 | mygrp / mysubgrp) + (1 | Subject),
data = sleepstudy
)
#> boundary (singular) fit: see help('isSingular')
find_variables(m2)
#> $response
#> [1] "Reaction"
#>
#> $conditional
#> [1] "Days"
#>
#> $random
#> [1] "mysubgrp" "mygrp" "Subject"
#>
find_variables(m2, flatten = TRUE)
#> [1] "Reaction" "Days" "mysubgrp" "mygrp" "Subject"
```