假设我有一个字符串向量:
我希望使用agrep()函数来返回汽车制造商在头部每个元素中出现位置的索引。我希望它能够返回结果。
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
这个说法两个都匹配,对我来说没有意义,我有什么遗漏的吗? 注:在我的实际情况下,我有大约70个汽车制造商和超过4k个头文件。
agrepl("zap", "Escape")
返回TRUE
。 - thelatemail