Subformula
constructs the subformulas of a
formula
object. Use this to speed up tasks such as model
selection and comparison of models.
Install the development version from GitHub with:
# install.packages("devtools")
::install_github("JonasMoss/subformula") devtools
There are two functions in the package, subformula
and
fapply
. subformulas
creates subformulas while
fapply
is a member of the apply
family
tailored for fitting a statistical model for each formula in a list of
formulas.
A formula sub
is a subformula of formula
if
(i) all the terms on the right hand side of sub
are terms of form
and (ii) their left hand sides
are identical. subformula
finds every subformula of
formula
that contains each term in
protected
.
library("subformula")
= mpg ~ wt + gear + cyl
formula subformula(formula, protected = ~ cyl)
#> [[1]]
#> mpg ~ cyl
#>
#> [[2]]
#> mpg ~ wt + cyl
#>
#> [[3]]
#> mpg ~ gear + cyl
#>
#> [[4]]
#> mpg ~ wt + gear + cyl
Now apply the subformulas to a model
function such as
lm
with fapply
.
= fapply(subformula(formula, protected = ~ cyl), lm, data = mtcars)
models lapply(models, AIC)
#> $`mpg ~ cyl`
#> [1] 169.3064
#>
#> $`mpg ~ wt + cyl`
#> [1] 156.0101
#>
#> $`mpg ~ gear + cyl`
#> [1] 170.7377
#>
#> $`mpg ~ wt + gear + cyl`
#> [1] 157.4991
If you encounter a bug, have a feature request or need some help, open a Github issue. This project follows a Contributor Code of Conduct.