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

如何在R语言中用mutate()从向量匹配模式并新增数据框列

解决方案

可以用stringr包的str_extract()函数结合dplyr的mutate()实现需求,这个函数能直接从字符串中提取匹配到的模式,适配多场景的字符串匹配需求。

完整代码示例

library(dplyr)
library(stringr)

# 构造目标数据框
df <- data.frame(A = c("148apple32394", "386pear3", "23banana3808"))
# 定义需要匹配的模式向量
patterns <- c("apple", "banana", "pear")

# 新增匹配结果列
df <- df %>%
  mutate(B = str_extract(A, paste(patterns, collapse = "|")))

print(df)

代码说明

  • paste(patterns, collapse = "|"):将模式向量拼接成正则表达式格式(用|分隔表示“或”逻辑),让str_extract()能在每个字符串中查找匹配项。
  • str_extract():从A列的每个字符串中提取第一个匹配到的模式,直接返回匹配的字符串内容,刚好作为新列B的值。

扩展:处理多匹配场景

如果某行字符串可能匹配多个模式,可以用str_extract_all()提取所有匹配项,再合并为单个字符串:

df <- df %>%
  mutate(B = str_extract_all(A, paste(patterns, collapse = "|")) %>% map_chr(str_c, collapse = ", "))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:12:38