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(x) parse_exprs(x) parse_quo(x, env) parse_quos(x, env)
Text containing expressions to parse_expr for
The environment for the quosures. Depending on the use case, a good default might be the global environment but you might also want to evaluate the R code in an isolated context (perhaps a child of the global environment or of the base environment).
parse_expr() returns an expression,
parse_exprs() returns a list of expressions. Note that for the
plural variants the length of the output may be greater than the
length of the input. This would happen is one of the strings
contain several expressions (such as
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.
The versions suffixed with
quosures rather than raw expressions.
parse_quosures() were soft-deprecated in
rlang 0.2.0 and renamed to
is consistent with the rule that abbreviated suffixes indicate
the return type of a function.
# parse_expr() can parse any R expression: parse_expr("mtcars %>% dplyr::mutate(cyl_prime = cyl / sd(cyl))")#> mtcars %>% dplyr::mutate(cyl_prime = cyl/sd(cyl))# A string can contain several expressions separated by ; or \n parse_exprs("NULL; list()\n foo(bar)")#> [] #> NULL #> #> [] #> list() #> #> [] #> foo(bar) #># You can also parse source files by passing a R connection. Let's # create a file containing R code: path <- tempfile("my-file.R") cat("1; 2; mtcars", file = path) # We can now parse it by supplying a connection: parse_exprs(file(path))#> [] #>  1 #> #> [] #>  2 #> #> [] #> mtcars #>