`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"`

.

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

x | An object to test. |
---|---|

scoped | A boolean indicating whether the quosure is scoped,
that is, has a valid environment attribute. If |

lhs | A boolean indicating whether the formula
or definition has a left-hand side. If |

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.

x <- disp ~ am is_formula(x)#> [1] TRUEis_formula(~10)#> [1] TRUEis_formula(10)#> [1] FALSE#> [1] TRUE#> [1] FALSE# Note that unevaluated formulas are treated as bare formulas even # though they don't inherit from "formula": f <- quote(~foo) is_bare_formula(f)#> [1] FALSE# However you can specify `scoped` if you need the predicate to # return FALSE for these unevaluated formulas: is_bare_formula(f, scoped = TRUE)#> [1] FALSE#> [1] TRUE