dot handling in model.matrix()
method when setting up the terms (reported by Kevin Tappe).model.part() method tries to avoid calling
has_dot() by checking the data attributes first. This can
greatly improve speed when there are lots of variables in a model part
that is actually not of interest.Extended processing of formulas with one or more .
on the right-hand side: In addition to "separate" and
"sequential" processing, there is now
dot = "previous" which resolves the . relative
to the previous right-hand side part.
model.part() failed in case of variables/terms with
very long names. Now deparse(..., width.cutoff = 500) is
used to support very long variable names as well.
Enhance Formula() so that if a Formula
is supplied it is simply returned unchanged (rather than throwing a
warning).
Enhance update() method for Formula
object so that also the “new” formula can be a Formula
object.
cbind(), log(), or
Surv()) and one ore more . on the right-hand
side. The terms() and hence the model.frame()
now work smoothly. When using model.part() the same
Formula (plus dot argument) has to be supplied
when preparing the model.frame() and the
model.part().. on
the right-hand side.str() method.CITATION was incorrect and is fixed now.All methods returning formula or
Formula objects now preserve the environment of the
originally supplied object by default.
The default and formula methods of as.Formula()
methods now also take an env argument.
terms = FALSE argument to
model.part() method for Formula objects. This
can be leveraged when processing multiple offsets. For example for
y ~ x + offset(o1) | z + offset(o2). See
?model.part for a worked example.Package now published in Journal of Statistical
Software: doi:10.18637/jss.v034.i01
and citation("Formula") within R.
Added an all.equal() method for Formula
objects that produces more intelligible output in case the result is not
TRUE.
Fixed an error of the update() method for
Formula objects without LHS.
Major revision (not fully backward compatible) to enable support
for multiple responses and multiple parts on the right-hand side such as
y1 | y2 ~ x, y1 + y2 ~ x1 + x2 | z1, or
y ~ u1 + u2 | v1 | x1 + x2 and combinations of
these.
Formula objects now consist of the original formula
plus two attributes "lhs" and "rhs" that
contain the parts of the decomposed left- and right-hand side,
respectively.
Most methods take arguments "lhs" and
"rhs" which allow selection of the desired parts on the
left- and right-hand side respectively, e.g., in a
model.frame() or model.matrix().
The previous arguments
response = TRUE/FALSE and
part = "first"/"second"/"both"
were not flexible enough anymore and have been deprecated. Use the
streamlined lhs/rhs arguments
instead.
vignette("Formula", package = "Formula") illustrates
usage of the tools provided by the package and explains the ideas
underlying its implementation.
Added CITATION file.
Added a has.intercept() function with methods for
formula and Formula objects.
Change the default value for model.frame.Formula:
"both" for a two-part formula and "first"
otherwise.
as.Formula() failed for very long
formulas.First CRAN release of package Formula for extended
formula processing. This package is still under development and the
interface might change in future versions.
Currently, this enables processing of formulas such as
y ~ x1 + x2 | z1 + z2 + z3 with two parts on the right hand
side.
Generalization to further formulas are planned (i.e., not
implemented yet), e.g., y1 + y2 ~ x1 + x2 + x3 or
y ~ x1 + x2 | u1 | v1 + v2 + v3 | ... i.e., multiple
responses and multi-part formulas.