30

我想提取包含某些特定字符串的字符数组的元素。例如:

x <- c('aa', 'ab', 'ac', 'bb', 'bc')

我想要一些函数,这样,给定x并且'a'(通常这可以是一个字符串),它返回'aa', 'ab', 'ac'. 我已经尝试过 , , 等的组合%in%matchwhich无法使它们起作用。任何想法?

4

2 回答 2

51

只需使用grep

grep('a', x, value=TRUE)
[1] "aa" "ab" "ac"
于 2013-11-01T16:34:30.883 回答
0

在表格或列表中,我们可以使用 dplyr/tidyverse 包中的 dplyr::pull 将列中的值首先转换为向量,然后在列中查找特定值。例如,在 LEGO 示例中,我们可以执行以下操作来查找以“s”或“S”开头的任何主题:

 inventory_parts_themes <- inventories %>%
   inner_join(inventory_parts, by = c("id" = "inventory_id")) %>%
     arrange(desc(quantity)) %>%
       select(-id, -version) %>%
         inner_join(sets, by = "set_num") %>%
            inner_join(themes, by = c("theme_id" = "id"), suffix = c("_set", "_theme"))

  all_theme_names <- dplyr::pull(inventory_parts_themes, name_theme) 
  all_theme_names[grep("^[sS].*", all_theme_names)]   
于 2020-05-16T00:30:25.887 回答