R: Is object a formula?

is_formula {rlang} | R Documentation

## Is object a formula?

### Description

`is_formula()` tests if `x` is a call to `~`. `is_bare_formula()` tests in addition that `x` does not inherit from anything else than `"formula"`.

### Usage

    is_formula(x, scoped = NULL, lhs = NULL)

    is_bare_formula(x, scoped = NULL, lhs = NULL)

### Arguments

`x` | An object to test.
`scoped` | A boolean indicating whether the quosure is scoped, that is, has a valid environment attribute. If `NULL`, the scope is not inspected.
`lhs` | A boolean indicating whether the formula or definition has a left-hand side. If `NULL`, the LHS is not inspected.

### Details

The `scoped` argument patterns-match on whether the scoped bundled with the quosure is valid or not. Invalid scopes may happen in nested quotations like `~~expr`, where the outer quosure is validly scoped but not the inner one. This is because `~` saves the environment when it is evaluated, and quoted formulas are by definition not evaluated.

### Examples

    x <- disp ~ am
    is_formula(x)

    is_formula(~10)
    is_formula(10)

    is_formula(quo(foo))
    is_bare_formula(quo(foo))

    # Note that unevaluated formulas are treated as bare formulas even
    # though they don't inherit from "formula":
    f <- quote(~foo)
    is_bare_formula(f)

    # However you can specify `scoped` if you need the predicate to
    # return FALSE for these unevaluated formulas:
    is_bare_formula(f, scoped = TRUE)
    is_bare_formula(eval(f), scoped = TRUE)

[Package rlang version 0.4.1 Index]