The new class
Formula extends the base class
formula by allowing for multiple responses
and multiple parts of regressors.
1 2 3 4 5 6 7 8
an object. For
indexes specifying which elements of the left- and
right-hand side, respectively, should be employed.
logical. Should multiple parts (if any) be collapsed
to a single part (essentially by replacing the
logical. Only used if
logical. Should the
Formula objects extend the basic
These extensions include multi-part formulas such as
y ~ x1 + x2 | u1 + u2 + u3 | v1 + v2, multiple response
y1 + y2 ~ x1 + x2 + x3, multi-part responses
y1 | y2 + y3 ~ x, and combinations of these.
Formula creates a
Formula object from a
which can have the
| operator on the left- and/or right-hand
side (LHS and/or RHS). Essentially, it stores the original
along with attribute lists containing the decomposed parts for the LHS
and RHS, respectively.
The main motivation for providing the
Formula class is to be
able to conveniently compute model frames and model matrices or extract
selected responses based on an extended formula language. This functionality
is provided by methods to the generics
model.matrix. For details and examples, see
their manual page:
In addition to these workhorses, a few further methods and functions are provided.
By default, the
formula() method switches back to the original
formula. Additionally, it allows selection of subsets of the
LHS and/or RHS (via
rhs) and collapsing
multiple parts on the LHS and/or RHS into a single part (via
is.Formula checks whether the argument inherits from the
as.Formula is a generic for coercing to
default method first coerces to
formula and then calls
Formula. The default and
formula method also take an
env argument, specifying the environment of the resulting
Formula. In the latter case, this defaults to the environment
Methods to further standard generics
length are provided
Formula objects. The latter reports the number of parts on
the LHS and RHS, respectively.
Formula returns an object of class
which inherits from
formula. It is the original
plus two attributes
"rhs" that contain the
parts of the decomposed left- and right-hand side, respectively.
Zeileis A, Croissant Y (2010). Extended Model Formulas in R: Multiple Parts and Multiple Responses. Journal of Statistical Software, 34(1), 1–13. http://www.jstatsoft.org/v34/i01/.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
## create a simple Formula with one response and two regressor parts f1 <- y ~ x1 + x2 | z1 + z2 + z3 F1 <- Formula(f1) class(F1) length(F1) ## switch back to original formula formula(F1) ## create formula with various transformations formula(F1, rhs = 1) formula(F1, collapse = TRUE) formula(F1, lhs = 0, rhs = 2) ## put it together from its parts as.Formula(y ~ x1 + x2, ~ z1 + z2 + z3) ## update the formula update(F1, . ~ . + I(x1^2) | . - z2 - z3) update(F1, . | y2 + y3 ~ .) # create a multi-response multi-part formula f2 <- y1 | y2 + y3 ~ x1 + I(x2^2) | 0 + log(x1) | x3 / x4 F2 <- Formula(f2) length(F2) ## obtain various subsets using standard indexing ## no lhs, first/seconde rhs formula(F2, lhs = 0, rhs = 1:2) formula(F2, lhs = 0, rhs = -3) formula(F2, lhs = 0, rhs = c(TRUE, TRUE, FALSE)) ## first lhs, third rhs formula(F2, lhs = c(TRUE, FALSE), rhs = 3)