Search code examples
rvectorstring-parsingstrsplit

Select elements from a character vector with strsplit


I have a character vector which looks like this:

chars <- c("Classics football boots", "Classics football shoes","football shoes", "new footbal shoes")

In this chars object i want to select only elements football shoes & football boots. With maintaining the order because i need to replace the vector back into a dataframe.

If tried many things but i think this comes most close:

for (i in grep("Classics",chars)){
  temp <- as.character(strsplit(chars[i], " ")[[1]][c(2,3)])
  temp2 <- as.character(na.omit(temp))
  chars[i] <- temp2
}

How can i get the object like this:

c("football boots", "football shoes","football shoes", "new footbal shoes")

So i only want to touch the values containing classics (or whatever word of interest).

Update:

Since I see that the question is not clear I will try to elaborate a bit more:

The vector that I have contains 4000 plus values. So I want to select values from the vector based on some string (in this example "Classics"). Then if I find that word I want to be able to select only parts of that string that are needed. In this example I want to select the second and third element of that value. Hope its more clear now.


Solution

  • One idea using grepl and word from stringr,

    chars[grepl('Classics', chars)] <- stringr::word(chars[grepl('Classics', chars)], 2, 3)
    chars
    #[1] "football boots"    "football shoes"    "football shoes"    "new footbal shoes"