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.

## Examples

```
if (require("lme4")) {
data(cbpp)
data(sleepstudy)
# 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 <- glmer(
cbind(incidence, size - incidence) ~ period + (1 | herd),
data = cbpp,
family = binomial
)
find_variables(m1)
m2 <- lmer(
Reaction ~ Days + (1 | mygrp / mysubgrp) + (1 | Subject),
data = sleepstudy
)
find_variables(m2)
find_variables(m2, flatten = TRUE)
}
#> boundary (singular) fit: see ?isSingular
#> [1] "Reaction" "Days" "mysubgrp" "mygrp" "Subject"
```