R: Parse a Formula and Create a Model Frame

ParseFormula {DescTools} | R Documentation

## Parse a Formula and Create a Model Frame

### Description

Create a model frame for a formula object, by handling the left hand side the same way the right hand side is handled in model.frame. Especially variables separated by + are interpreted as separate variables.

### Usage

    ParseFormula(formula, data = parent.frame(), drop = TRUE)

### Arguments

`formula` | an object of class "formula" (or one that can be coerced to that class): a symbolic description for the variables to be described.
`data` | an optional data frame, list or environment (or object coercible by as.data.frame to a data frame) containing the variables in the model. If not found in data, the variables are taken from environment(formula), typically the environment from which lm is called.
`drop` | if `drop` is `TRUE`, unused factor levels are dropped from the result when creating interaction terms. The default is to drop all unused factor levels.

### Details

This is used by `Desc.formula` for describing data by groups while remaining flexible for using `I(...)` constructions, functions or interaction terms.

### Value

a list of 3 elements

`formula` | the formula which had to be parsed
`lhs` | a list of 3 elements: mf: data.frame, the model.frame of the left hand side of the formula mf.eval: data.frame, the evaluated model.frame of the left hand side of the formula vars: the names of the evaluated model.frame
`rhs` | a list of 3 elements: mf: data.frame, the model.frame of the right hand side of the formula mf.eval: data.frame, the evaluated model.frame of the right hand side of the formula vars: the names of the evaluated model.frame

### Author(s)

Andri Signorell <andri@signorell.net>

### See Also

The functions used to handle formulas: `model.frame`, `terms`, `formula`
Used in: `Desc.formula`

### Examples

    set.seed(17)
    piz <- d.pizza[sample(nrow(d.pizza),10), c("temperature","price","driver","weekday")]

    f1 <- formula(. ~ driver)
    f2 <- formula(temperature ~ .)
    f3 <- formula(temperature + price ~ .)
    f4 <- formula(temperature ~ . - driver)
    f5 <- formula(temperature + price ~ driver)
    f6 <- formula(temperature + price ~ driver * weekday)
    f7 <- formula(I(temperature^2) + sqrt(price) ~ driver + weekday)
    f8 <- formula(temperature + price ~ 1)
    f9 <- formula(temperature + price ~ driver * weekday - price)

    ParseFormula(f1, data=piz)
    ParseFormula(f2, data=piz)
    ParseFormula(f3, data=piz)
    ParseFormula(f4, data=piz)
    ParseFormula(f5, data=piz)
    ParseFormula(f6, data=piz)
    ParseFormula(f7, data=piz)
    ParseFormula(f8, data=piz)

[Package DescTools version 0.99.28 Index]