You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何从向量中提取匹配的多个子字符串模式

R 按子串匹配生成对应向量的实现方案

需求说明

现有两个测试向量:

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")

要求生成等长的新向量:对patient_condition的每个元素,返回to_match中作为该元素子串存在的值,预期输出如下:

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

实现方法

方法1:stringr包简洁实现(推荐)

直接用正则提取匹配值,代码最简洁,适配当前场景:

library(stringr)
# 把待匹配值拼接成正则或模式,批量提取匹配项
result <- str_extract(patient_condition, str_c(to_match, collapse = "|"))

运行后result的值和预期输出完全一致。

方法2:基础R实现,无需安装第三方包

用sapply遍历每个元素做匹配,不需要加载额外包,兼容所有R版本:

result <- sapply(
  patient_condition,
  function(x) grep(x, to_match, value = TRUE),
  USE.NAMES = FALSE
)

注意:如果后续数据中存在某个patient_condition元素同时匹配多个to_match值的情况,上述两种方法默认返回最先匹配到的结果,可根据实际业务需求调整多匹配项的处理逻辑,当前测试用例不存在该问题,可直接运行得到正确结果。

内容的提问来源于stack exchange,提问作者ZainNST

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 10:03:21