How to Use str_sub in R (With Examples)

Spread the love

The str_sub function in R, hailing from the stringr package, is a powerful utility for string manipulation and a vital tool for those who routinely interact with textual data in R. This function allows users to extract or replace substrings from a character vector based on their positions. Understanding how to harness str_sub is crucial in text processing, data cleaning, and various analytical applications.

Syntax of str_sub

The standard syntax for the str_sub function is:

str_sub(string, start = 1, end = -1)
  • string: The input character vector.
  • start: The position to start extracting the substring. It can be negative to count from the end of the string.
  • end: The position to end the substring extraction. It can be negative to count from the end of the string.

Basic Usage of str_sub

Example 1: Extracting Substring

Here is a simple example where we are extracting a substring from a character string.


substring <- str_sub(string, start = 2, end = 5)
print(substring) # Output: "BCDE"

Example 2: Using Negative Indexing

Negative indexing can be used to extract substrings counting from the end of the string.

substring <- str_sub(string, start = -5, end = -2)
print(substring) # Output: "VWXY"

Example 3: Replacing Substring

str_sub can also be used to replace a portion of the string by assigning a new value.

str_sub(string, start = 2, end = 5) <- "1234"
print(string) # Output: "A1234FGHIJKLMNOPQRSTUVWXYZ"

Advanced Utilization and Applications

Using str_sub with Data Frames

When working with data frames containing string variables, str_sub can be leveraged for effective string manipulation.

# Creating a data frame
df <- data.frame(Name = c("John Doe", "Jane Doe", "Jim Beam"))

# Extracting first names using str_sub
df$FirstName <- str_sub(df$Name, start = 1, end = str_locate(df$Name, " ")[,1] - 1)

# Output:
#      Name   FirstName
# 1 John Doe      John
# 2 Jane Doe      Jane
# 3 Jim Beam       Jim

Conditionally Replacing Substrings

str_sub can be used conditionally to replace substrings based on certain criteria within a vector of strings.

# Vector of strings representing product codes
product_codes <- c("apple123", "banana456", "cherry123")

# Conditionally replacing numbers ending with "123" with "XXX"
str_sub(product_codes, start = -3, end = -1) <- ifelse(str_sub(product_codes, start = -3, end = -1) == "123", "XXX", str_sub(product_codes, start = -3, end = -1))

# Output: "appleXXX" "banana456" "cherryXXX"

Practical Implications and Real-world Examples

Text Preprocessing for Analysis

In text analysis, str_sub is instrumental in preprocessing text data by extracting or replacing specific parts of strings, preparing the dataset for more insightful analysis.

# List of sentences
sentences <- c("The quick brown fox.", "Jumped over the lazy dog.")

# Removing the last character (period) from each sentence
sentences_cleaned <- str_sub(sentences, end = -2)

# Output: "The quick brown fox" "Jumped over the lazy dog"

Handling Filenames and Paths

When working with file paths and filenames, str_sub can be applied to extract or modify parts of the paths or filenames, facilitating better file management.

# List of file paths
file_paths <- c("/user/documents/file1.txt", "/user/documents/file2.csv")

# Extracting filenames from file paths
filenames <- str_sub(file_paths, start = str_locate(file_paths, "[^/]+$")[,1])

# Output: "file1.txt" "file2.csv"


The str_sub function from R’s stringr package is a pivotal tool for anyone dealing with string manipulation in R, providing a versatile approach to extract or replace substrings within character vectors. From simple extraction operations to advanced usage in data frames, and real-world applications like text preprocessing and file management, the utility of str_sub is vast and varied.

By using str_sub judiciously and combining it with other string manipulation functions, one can achieve an extensive and efficient approach to handle strings in R. Whether you are dealing with data cleaning, text analysis, or general string manipulations, mastering str_sub can significantly streamline your workflow and enhance the quality and reliability of your textual data manipulations and analyses in R.

Posted in RTagged

Leave a Reply