【发布时间】:2016-07-14 10:07:34
【问题描述】:
我在 R 中有两个向量。我想找到它们之间的部分匹配。
我的数据
第一个来自名为 muc 的数据集,其中包含 6400 个街道名称。 muc$name 看起来像:
muc$name = c("Berberichweg", "Otto-Klemperer-Weg", "Feldmeierbogen" , "Altostraße",...)
另一个向量是d_vector。它包含大约 1400 个名称。
d_vector = "Abel", "Abendroth", "von Abercron", "Abetz", "Abicht", "Abromeit", ...
我想查找所有街道名称,其中包含街道名称中某处来自 d_vector 的名称。
首先,我在导入csv数据(作为变量d)后做了一些通用的修改:
d_vector <- unlist(d$name)
d_vector <- as.vector(as.matrix(d_vector))
到目前为止我尝试了什么
- 然后我尝试用 grep 找到一个解决方案,将 d_vector 变成包含一个长字符串,用 | 分隔对于 RegEx 搜索:
result <- unique(grep(paste(d_vector, collapse="|"), muc$Name, value=TRUE, ignore.case = TRUE))
result
但结果返回所有街道名称。
我还尝试使用 agrep,它重新调整了
Out of memory-Error。当我尝试
d_vector %in% muc$name时,它只返回了一个 TRUE 和数百个 FALSE,这似乎不太正确。
您对我的错误可能在哪里或我可以使用哪个库有什么建议吗? 我正在为 R 寻找类似 python 的“fuzzywuzzy”之类的东西
【问题讨论】:
标签: r pattern-matching string-matching