Returns a list with the names of all terms, including response
value and random effects, "as is". This means, on-the-fly tranformations
or arithmetic expressions like log()
, I()
, as.factor()
etc. are
preserved.
Usage
find_terms(x, ...)
# S3 method for default
find_terms(x, flatten = FALSE, as_term_labels = FALSE, verbose = TRUE, ...)
Arguments
- x
A fitted model.
- ...
Currently not used.
- flatten
Logical, if
TRUE
, the values are returned as character vector, not as list. Duplicated values are removed.- as_term_labels
Logical, if
TRUE
, extracts model formula and tries to access the"term.labels"
attribute. This should better mimic theterms()
behaviour even for those models that do not have such a method, but may be insufficient, e.g. for mixed models.- verbose
Toggle warnings.
Value
A list with (depending on the model) following elements (character vectors):
response
, the name of the response variableconditional
, the names of the predictor variables from the conditional model (as opposed to the zero-inflated part of a model)random
, the names of the random effects (grouping factors)zero_inflated
, the names of the predictor variables from the zero-inflated part of the modelzero_inflated_random
, the names of the random effects (grouping factors)dispersion
, the name of the dispersion termsinstruments
, the names of instrumental variables
Returns NULL
if no terms could be found (for instance, due to
problems in accessing the formula).
Note
The difference to find_variables()
is that find_terms()
may return a variable multiple times in case of multiple transformations
(see examples below), while find_variables()
returns each variable
name only once.
Examples
data(sleepstudy, package = "lme4")
m <- suppressWarnings(lme4::lmer(
log(Reaction) ~ Days + I(Days^2) + (1 + Days + exp(Days) | Subject),
data = sleepstudy
))
find_terms(m)
#> $response
#> [1] "log(Reaction)"
#>
#> $conditional
#> [1] "Days" "I(Days^2)"
#>
#> $random
#> [1] "Days" "exp(Days)" "Subject"
#>
# sometimes, it is necessary to retrieve terms from "term.labels" attribute
m <- lm(mpg ~ hp * (am + cyl), data = mtcars)
find_terms(m, as_term_labels = TRUE)
#> $conditional
#> [1] "hp" "am" "cyl" "hp:am" "hp:cyl"
#>