假设我有一个向量,如下所示:

patient_condition <- c("Pre_P1","Post_P1","Enriched_Post_P1","Post_P1_2","Pre_P2","Post_P2", "P3_Pre")
to_match <- c("P1","P2","P3")

我想创建另一个向量,使新向量仅包含to_match中的值(如果它是子字符串).

[1] "P1"  "P1"  "P1"  "P1"  "P2"  "P2"  "P3"

感谢您的帮助.非常感谢.

推荐答案

我们可以使用

stringr::str_extract(patient_condition, "P[0-9]+")
#[1] "P1" "P1" "P1" "P1" "P2" "P2" "P3"

Misc Replies

就我而言,这个答案是有效的.但我想我要问的问题是从给定一些匹配值的向量中提取子字符串.这意味着,如果我想提取字符(即前置、后置、浓缩等),这个答案将不起作用

to_match <- c("Pre", "Post", "Enriched")

在这种情况下,我们可以使用

## R-level loop through `to_match`
tmp <- t(sapply(to_match, stringr::str_extract, string = patient_condition))
tmp[!is.na(tmp)]
#[1] "Pre"      "Post"     "Enriched" "Post"     "Pre"      "Post"     "Pre"  

## convert multiple matches to REGEX "或" operation `|`
stringr::str_extract(patient_condition, paste0(to_match, collapse = "|"))
#[1] "Pre"      "Post"     "Enriched" "Post"     "Pre"      "Post"     "Pre"

ThomasIsCoding's answer使用gregexpr+regmatches也是一个很好的 Select .

注意,这是进行exact个子字符串匹配.

R相关问答推荐

如何删除多个.CSV文件的行

gt()从gt为相同内容的单元格 colored颜色 不同?

用预测NLS处理R中生物学假设之上的误差传播

RStudio中相关数据的分组箱形图

在R中,如何将变量(A,B和C)拟合在同一列中,如A和B,以及A和C在同一面板中?

将饼图插入条形图

DEN扩展包中的RECT树形图出现异常行为

将二进制数据库转换为频率表

ComplexHEAT:使用COLUMN_SPLIT时忽略COLUMN_ORDER

如何识别倒排的行并在R中删除它们?

为什么我使用geom_density的绘图不能到达x轴?

R:用GGPLATE,如何在两个独立的变量中制作不同形状的散点图?

在R中,我如何使用滑动窗口计算位置,然后进行过滤?

如何在使用箭头R包(箭头::OPEN_DATASSET)和dplyr谓词时编写具有整齐计算的函数?

提高圣彼得堡模拟的速度

为什么函数toTitleCase不能处理english(1),而toupper可以?

附加中缀操作符

在一个multiplot中以非对称的方式在R中绘制多个图

如何在一个GGPLATE中绘制多个灰度平滑?

使用dplyr删除具有条件的行