查找并 return 多个独立的字符串

Find and return multiple independent strings

我有一个 table 在同一列中有几个不同的字符串。我希望能够搜索该列并找到不同的字符串,然后 return 每个不同字符串的不同结果。例如,如果我有以下列数据:

Seq_ID   Column2
    1. RNA-ATI_1    
    2. RNA-ATI_2
    3.  DNA-FU_1
    4.  FU-DNA_2
    5. DNA-TP1_1
    6. RNA-TP1_2
    7.  RNA-BL_1
    8.  BL-RNA_2

我想搜索字符串 "ATI" and return "ATI" 并搜索 "FU" and return "FU" and "TP1" 和 return "TP1" 这样我就可以用单独的 column2 中的字符串构建一个新的 table。 我可以使用 grepl 为单个值执行此操作,但我不知道如何为多个输出执行此操作。一些警告是数据并不总是以相同的顺序或由 相同的符号。

y <- ifelse(grepl("*ATI", tab$Sequence_ID), "Analytical treatment interruption", " ")

这似乎只适用于一个,但我不知道如何扩展它以适用于多个。

最后我想:

 Seq_ID      Column2
     1.    RNA-ATI_1    ATI
     2.    RNA-ATI_2    ATI
     3.     DNA-FU_1     FU
     4.     FU-DNA_2     FU
     5.    DNA-TP1_1    TP1
     6.    RNA-TP1_2    TP1
     7.     RNA-BL_1     BL 
     8.     BL-RNA_2     BL

您可以为 regexpr 调用指定多个模式,假设它们都是不同的字符串。例如:

regmatches(dat$Column2, regexpr("ATI|FU|TP1|BL", dat$Column2))
#[1] "ATI" "ATI" "FU"  "FU"  "TP1" "TP1" "BL"  "BL"

这也可以在 stringi stringr 等包中使用它们的 str_extractstri_extract 函数进行类比 - 请参阅上面的@mnel 和他的回答。

你可以使用 stringr::str_extract_all

y <- stringr::string_extract_all(dat$Column2,"ATI|FU|TP1|BL")