These functions parse and transform text into R expressions. This
is the first step to interpret or evaluate a piece of R code
written by a programmer.
- parse_expr()returns one expression. If the text contains more
than one expression (separated by semicolons or new lines), an
error is issued. On the other hand- parse_exprs()can handle
multiple expressions. It always returns a list of expressions
(compare to- base::parse()which returns a base::expression
vector). All functions also support R connections.
 
- parse_expr()concatenates- xwith- \\nseparators prior to
parsing in order to support the roundtrip- parse_expr(expr_deparse(x))(deparsed expressions might be
multiline). On the other hand,- parse_exprs()doesn't do any
concatenation because it's designed to support named inputs. The
names are matched to the expressions in the output, which is
useful when a single named string creates multiple expressions.
 - In other words, - parse_expr()supports vector of lines whereas- parse_exprs()expects vectors of complete deparsed expressions.
 
- parse_quo()and- parse_quos()are variants that create a
quosure. Supply- env = current_env()if you're parsing
code to be evaluated in your current context. Supply- env = global_env()when you're parsing external user input to be
evaluated in user context.
 - Unlike quosures created with - enquo(),- enquos(), or- {{, a
parsed quosure never contains injected quosures. It is thus safe
to evaluate them with- eval()instead of- eval_tidy(), though
the latter is more convenient as you don't need to extract- exprand- env.