# is_formula

##### Is object a formula?

`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

```
# NOT RUN {
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)
# }
```

*Documentation reproduced from package rlang, version 0.2.2, License: GPL-3*