从向量中返回匹配的模式 - R

问题描述 投票:0回答:1

我正在尝试编写向数据框添加新列的代码,返回已与不同列中的相应单元格匹配的模式。

例如,我有一个列,其中的值是一个字符串,混合了有用和无用的信息,如下所示:

data.frame(A = c("148apple32394", "386pear3", "23banana3808"))

A
1 148apple32394
2      386pear3
3  23banana3808

我想将此列与可能模式的向量进行比较,即:

patterns <- c("apple", "banana", "pear")

并返回一个包含任何匹配模式的新列,最终结果为:

A                B
1 148apple32394  apple
2      386pear3  pear
3  23banana3808  banana

我知道

grep
不能很好地处理模式向量,那么有没有另一个好的函数可以工作?理想情况下,我想使用
mutate()

实施解决方案

谢谢!

r string matching
1个回答
1
投票

您可以使用

str_extract
和被
|
折叠的模式来检测和提取这样的模式:

df = data.frame(A = c("148apple32394", "386pear3", "23banana3808"))
patterns <- c("apple", "banana", "pear")
library(dplyr)
library(stringr)
df %>%
  mutate(B = str_extract(A, paste(patterns, collapse = "|")))
#>               A      B
#> 1 148apple32394  apple
#> 2      386pear3   pear
#> 3  23banana3808 banana

创建于 2023-03-10 与 reprex v2.0.2

© www.soinside.com 2019 - 2024. All rights reserved.