使用strsplit从字符向量中选择元素

时间:2017-01-26 10:51:21

标签: r vector string-parsing strsplit

我有一个如下所示的字符向量:

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

在这个chars对象中,我想只选择元素football shoes & football boots。维护订单,因为我需要将向量替换回dataframe

如果尝试了很多东西,但我认为这是最接近的:

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
}

我怎样才能得到这样的对象:

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

所以我只想触摸包含经典(或任何感兴趣的词)的值。

更新

由于我发现问题不明确,我将尝试详细说明:

我所拥有的矢量包含4000多个值。所以我想根据一些字符串从矢量中选择值(在这个例子中&#34; Classics&#34;)。然后,如果我找到该单词,我希望只能选择所需的那部分字符串。在这个例子中,我想选择该值的第二个和第三个元素。希望现在更清楚。

2 个答案:

答案 0 :(得分:1)

使用grepl中的wordstringr

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

答案 1 :(得分:0)

为什么不简单:

gsub("Classics\\s+", "", chars)
# [1] "football boots"    "football shoes"    "football shoes"    "new footbal shoes"