gpt4 book ai didi

r - 如果模式是字符串字符,如何找到匹配项?

转载 作者:行者123 更新时间:2023-12-02 01:31:53 24 4
gpt4 key购买 nike

假设我有一个字符串向量:

header = c("2012 Chevrolet Camaro SS", 
"2013 Chevrolet Equinox LT",
"2013 Nissan Altima 2.5 SV",
"2009 Infiniti M35x X")

和汽车制造商名单

maker.list = c("Chevrolet", "Nissan", "Infiniti")

我想使用 agrep() 返回标题中每个元素中汽车制造商出现位置的索引。我要它回来

idx = c(2, 2, 2, 2) #the makers' name occurs at the 2nd position of each element 

由于模式是字符串列表,我正在考虑使用 mapply 或 lapply 来循环它。或者可以使用 r 命令将制造商名称更改为正则表达式,例如

regexp = "Chevrolet|Nissan|Infiniti" 

到目前为止我有:

idx = lapply(maker.list, function(permaker){
match.result = agrep(permaker, header, max.distance = 1)
return (match.result)
})

这显然行不通......有什么想法吗?

----------------------------更新---------------- --------------我尝试了以下解决方案之一,但发生了一些奇怪的事情。

maker.list1 = c("zap", "ford")
lapply(maker.list1, agrep, c("2011" ,"Ford", "Escape"), max.distance = 1, ignore.case = TRUE)

结果是

[[1]]
[1] 3

[[2]]
[1] 2

这两个匹配项,这对我来说毫无意义,我是不是漏掉了什么?ps:以我的实际情况,我有大约70家汽车制造商和超过4k的标题。

最佳答案

strsplit 您的 header 中的每个项目都用空格分隔,然后通过每个项目运行 agrep:

sapply(strsplit(header, "\\s+"), function(H) unlist(lapply(maker.list, agrep, H)) )
#[1] 2 2 2 2

如果您在任何情况下都获得了多次命中,您将得到一个列表而不是一个矢量作为结果。

关于r - 如果模式是字符串字符,如何找到匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33726764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com