Alan
Alan

Reputation: 681

Removing Specific Prefix from String Vector in R

I need to be able to test if certain words appear at the start of a character vector. I've written a function which seems to work:

remove_from_front <- function(my_str, my_prefix) {
  
  remove_from_front <- ifelse(startsWith(my_str, my_prefix),
                              substr(my_str, nchar(my_prefix) + 1, nchar(my_str)),
                              my_str)
  
  remove_from_front
  
}

test_strings <- c("The Quick Brown Fox",
                  "The Quick Yellow Fox",
                  "The Slow Red Fox")

remove_from_front(test_strings, "The Quick ")

This looks for "The Quick " at the start of a string, and removes it if it finds it (and does nothing if it doesn't find it).

I'm wondering if there's some more concise way to do it using some existing R functionality - can anyone advise please?

Upvotes: 0

Views: 398

Answers (1)

Allan Cameron
Allan Cameron

Reputation: 173793

You can use sub to replace a pattern within a string in R. Use a ^ at the start of your match pattern so that only strings starting with this pattern are replaced. Just replace with the empty string, ""

sub("^The Quick ", "", test_strings)
#> [1] "Brown Fox"        "Yellow Fox"       "The Slow Red Fox"

Alternately, use trimws:

trimws(test_strings, whitespace = '^The Quick ')
#> [1] "Brown Fox"        "Yellow Fox"       "The Slow Red Fox"

Created on 2023-01-10 with reprex v2.0.2

Upvotes: 1

Related Questions