model.frame() assumes that certain operations (e.g. /, *, ^) have special meanings. These can be inhibited using I(). This function inserts I() into a formula when encountering a specified operator or parens.

reop_formula(x, ops = c("/", "*", "^"))

Arguments

x

a formula (or a call of length 2 or 3, for recursive processing of formulas). Other objects are returned unchanged.

ops

a vector of character representions of operators to be inhibited.

Value

a formula with I() inserted where required to inhibit interpretation/conversion.

Examples

reop_formula(y ~ x * y)
#> y ~ I(x * y)
#> <environment: 0x55c196f46638>
reop_formula(y ~ (x * y))
#> y ~ I(x * y)
#> <environment: 0x55c196f46638>
reop_formula(y ~ x ^ y)
#> y ~ I(x^y)
#> <environment: 0x55c196f46638>
reop_formula(y ~ x * y ^ z)
#> y ~ I(x * y^z)
#> <environment: 0x55c196f46638>