Formula {Formula} | R Documentation |
The new class Formula
extends the base class
formula
. Currently, the only extenseion are
two-part formulas, further extensions are planned.
Formula(object) as.Formula(x, ...) ## Default S3 method: as.Formula(x, ...) is.Formula(object) ## S3 method for class 'Formula': formula(x, part = c("first", "second", "both"), response = NULL, ...) ## S3 method for class 'Formula': terms(x, ..., part = "first", response = NULL) ## S3 method for class 'Formula': update(object, new, ...) ## S3 method for class 'Formula': model.matrix(object, ..., part = "first") ## S3 method for class 'Formula': model.frame(formula, ..., part = NULL, response = NULL) ## S3 method for class 'Formula': length(x) has.intercept(object, ...) ## S3 method for class 'formula': has.intercept(object, ...) ## S3 method for class 'Formula': has.intercept(object, part = "first", ...)
object, x, formula |
an object. For Formula it needs to be a
formula object. |
part |
character specifying the part of the right hand side of the formula to use:
"first" , "second" or "both" . |
response |
logical. Should the response be include in the formula? |
new |
a formula giving a template which specifies how to update. |
... |
further arguments. |
Formula
objects extend the basic formula
objects.
Currently, the only extension implemented are two-part formulas
of type: y ~ x1 + x2 | z1 + z2 + z3
. However, Formula
is under development and features on the wishlist for future
versions include multi-part formulas
(y ~ x1 + x2 | u1 + u2 + u3 | v1 + v2
) and multiple response
formulas (y1 + y2 ~ x1 + x2 + x3
). This might result in
changes of the interface of some methods in future versions.
Currently, a Formula
is a formula for which the right hand
side has two parts separated by a pipe sign. The Formula
function coerce a formula to a Formula
object just
by modifying the class attribute.
is.Formula
check whether the argument of the function is
Formula
object.
as.Formula
is a generic for coercing to Formula
,
the default method first coerces to formula
and then calls
Formula
.
Several methods are provided: They all use the formula
method
for creating a standard formula first. The returned formula is a
one-sided formula if response = FALSE
and a two-sided formula
if response = TRUE
. The right-hand side depends on the
part
argument: the first part ("first"
), the second part
"second"
or both ("both"
).
Hence, the two arguments (response
and part
) are used in the
terms
, model.frame
and model.matrix
methods.
Formula
returns an object of class Formula
which inherits from formula
.
data("airquality", package = "datasets") f <- Ozone ~ Solar.R + Wind | Temp # create a Formula object from the formula f2 <- Formula(f) class(f2) # examples of updates of the two-parts formula update(f2,. ~ . - Wind + Day | . + Month) update(f2,. ~ . | . + Month) update(f2,. ~ . - Wind + Day | .) # get the first, second and both parts, with or without the response formula(f2, part = "first", response = TRUE) formula(f2, part = "second", response = FALSE) formula(f2, part = "both") # model.frame for the first part and for both parts head(model.frame(f2, part = "first", data = airquality)) head(model.frame(f2, part = "both", data = airquality)) # model.matrix for the first and the second part head(model.matrix(f2, data = airquality, part = "first")) head(model.matrix(f2, data = airquality, part = "second")) # note that the sample is not the same due to missing values mf <- model.frame(f2, part = "both", data = airquality) head(model.matrix(f2, data = mf, part = "first")) head(model.matrix(f2, data = mf, part = "second"))