Last chance! 50% off unlimited learning
Sale ends in
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_formulaish()
returns TRUE
for both formulas and
definitions of the type a := b
.
is_formula(x, scoped = NULL, lhs = NULL)is_bare_formula(x, scoped = NULL, lhs = NULL)
is_formulaish(x, scoped = NULL, lhs = NULL)
An object to test.
A boolean indicating whether the quosure or formula
is scoped, that is, has a valid environment attribute. If NULL
,
the scope is not inspected.
A boolean indicating whether the formula
or definition has a left-hand side. If NULL
,
the LHS is not inspected.
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.
# 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)
# There is also a variant that returns TRUE for definitions in
# addition to formulas:
is_formulaish(a ~ b)
is_formulaish(a := b)
# }
Run the code above in your browser using DataLab