# parse, deparse & expression Functions in R | Handle Character String & Expression

In this tutorial I will show you how to **create expressions**, how to **convert characters to expressions**, and how to **convert expressions to characters**.

This tutorial is based on the expression, parse, and deparse R programming functions. So let’s first have a look at the basic R syntax and the definitions of the functions:

**Basic R Syntax:**

expression(character) parse(text = character) deparse(expression) |

expression(character) parse(text = character) deparse(expression)

**Definition:**

The **expression function** creates an R object of the expression class.

The **parse function** converts an R object of the character class to an R object of the expression class.

The **deparse function** converts an R object of the expression class to an R object of the character class.

In the following article, I will show you **five examples** for expression, parse, and deparse in R. Let’s dive right in!

## Example 1: Create R Expression (*expression Function*)

In the first example, I’ll show you how to create an R expression with the expression function:

x1 <- expression(2^2) # Create expression in R x1 # Print output to RStudio console # expression(2^2) |

x1 <- expression(2^2) # Create expression in R x1 # Print output to RStudio console # expression(2^2)

With the previous R code, we have created the expression *2^2* and have stored this expression in the data object *x1*. We can double check the class of this data object with the class function:

class(x1) # Check class of example data # "expression" |

class(x1) # Check class of example data # "expression"

Looks good! We could now evaluate this expression with the eval function:

eval(x1) # Use eval function to evaluate expression # 4 |

eval(x1) # Use eval function to evaluate expression # 4

*2^2 = 4*… Correct!

However, the eval function is not the scope of this tutorial. If you want to learn more about eval in R, check out this tutorial.

## Example 2: Convert Character String to R Expression (*parse Function*)

It happens quite often that we have an expression, which is stored as character class in R. If we want to evaluate such an expression, we need to convert our data object from character class to expression class.

I’ll show an example. Let’s first create an exemplifying data object:

x2 <- "2^2" # Create character string x2 # Print output to RStudio console # "2^2" |

x2 <- "2^2" # Create character string x2 # Print output to RStudio console # "2^2"

As you can see based on the class function, our example data has the class character:

class(x2) # Check class of example data # "character" |

class(x2) # Check class of example data # "character"

If we want to convert this character string to an expression, we can use the parse function:

x2 <- parse(text = x2) # Convert character to expression x2 # Print output to RStudio console # expression(2^2) |

x2 <- parse(text = x2) # Convert character to expression x2 # Print output to RStudio console # expression(2^2)

Let’s check the class of our data again:

class(x2) # Check class of example data # "expression" |

class(x2) # Check class of example data # "expression"

The data object *x2* is an expression now and can be evaluated with the eval function (as shown in Example 1).

## Example 3: Convert Expression String to Character (*deparse Function*)

We can also do the conversion of Example 2 in the opposite way (i.e. converting from expression to character class). For this example, I’m going to use the data object *x2*, that we have converted to an expression in Example 2.

With the deparse function, we can convert this R expression back to the character class and store it in the new data object *x3*:

x3 <- deparse(x2) # Convert expression to character x3 # Print output to RStudio console # "structure(expression(2^2), srcfile = <environment>, wholeSrcref = structure(c(1L, " "0L, 2L, 0L, 0L, 0L, 1L, 2L), srcfile = <environment>, class = \"srcref\"))" |

x3 <- deparse(x2) # Convert expression to character x3 # Print output to RStudio console # "structure(expression(2^2), srcfile = <environment>, wholeSrcref = structure(c(1L, " "0L, 2L, 0L, 0L, 0L, 1L, 2L), srcfile = <environment>, class = \"srcref\"))"

Let’s check the result with the class function:

class(x3) # Check class of example data # "character" |

class(x3) # Check class of example data # "character"

*x3* is a character string – looks good.

## Typical Parsing Errors & How to Avoid Them

If the expression, parse, and deparse functions are not applied correctly, they might lead to errors. In the following two examples, I’m going to show you two typical errors that occur after applying the parse function.

### R parse Function Error: Unexpected End of Input

A typical error of the parse function is the following:

parse(text = "2^") # Non-complete expression |

parse(text = "2^") # Non-complete expression

**Figure 1: Parsing Error in R: Unexpected End of Input.**

This error usually occurs when the expression does not end with a number or a letter. In this specific case our fake expression ends with a minus sign (i.e. -) and therefore the parse function returns an error to the RStudio console.

### R parse Function Error: Unexpected Symbol

Another typical error of the parse function is the following:

parse(text = "2a") # Unexpected symbol |

parse(text = "2a") # Unexpected symbol

**Figure 2: Parsing Error in R: Unexpected Symbol.**

This error occurs when several symbols are connected in an invalid way. In this specific case we tried to convert *2a* to an expression without specifying if we want to do with these two values. Do we want to multiply, do we want to subtract…? We have to replace *2a* with something like *2*a* or *2-a* in order to make the parse function work.

## Video Examples: Regular Expressions in R

In this tutorial I explained a lot about expressions in R. If you want to learn more about expressions in general, I can recommend the following video of Roger Peng’s YouTube channel. In the video, he explains how to use regular expressions in R.

Enjoy the video and let me know in the comments, in case you have any questions on the handling of character strings and expressions in R.

## Further Reading

### Subscribe to my free statistics newsletter:

### R Tutorials

abs Function in R

all & any R Functions

Set Aspect Ratio of Plot

attach & detach R Functions

attr, attributes & structure in R

cbind R Command

Change ggplot2 Legend Title

Character to Numeric in R

Check if Object is Defined

col & row sums, means & medians

Complete Cases in R

Concatenate Vector of Strings

Convert Date to Weekday

cumsum R Function

Data Frame Column to Numeric

diff Command in R

difftime R Function

dim Function in R

dir R Function

Disable Scientific Notation

Draw Segments in R

droplevels R Example

Evaluate an Expression

Extract Characters from String

Factor to Numeric in R

Format Decimal Places

get, get0 & mget in R

is.na R Function

is.null Function in R

jitter R Function

Join Data with dplyr Package

length Function in R

lowess R Smoothing Function

max and min Functions in R

NA Omit in R

nchar R Function

ncol Function in R

nrow Function in R

outer Function in R

pairs & ggpairs Plot

parse, deparse & R expression

paste & paste0 Functions in R

pmax and pmin R Functions

polygon Plots in R

pretty R Function

R Find Missing Values

R Functions List (+ Examples)

R NA – Values

R Replace NA with 0

rbind & rbind.fill in R

Read Excel Files in R

readLines, n.readLines & readline

Remove Element from List

Remove Legend in ggplot2

Rename Column Name in R

Replace Last Comma of String

rev R Command

Round Numeric Data in R

Save & Load RData Workspace

scan R Function

setdiff R Function

setNames vs. setnames in R

sink Command in R

Sort, Order & Rank Data in R

sprintf Function in R

Square Root in R

str_c Function of stringr Package

str_sub Function of stringr Package

strptime & strftime Functions

substr & substring R Commands

sweep R Function

Transform Data Frames

union Function in R

unlist in R

weekdays, months, quarters & julian in R

with & within R Functions

Write Excel File in R