【发布时间】:2019-02-06 18:17:43
【问题描述】:
我正在使用 R 中的两个字符串向量。
第一个,owner,包含大约 100,000 个元素,看起来像:
> proprietor
[1] "GERALD RICA LIMITED"
[2] "EUROMASTER STUDIO SRL"
[3] "CENTRE D'ECHANGES INTERNATIONAUX (CEI)"
[4] "RONTEC SERVICE STATION 1A LIMITED"
[5] "MOORGARTH PROPERTIES (LUXEMBOURG) S.A.R.L"
[6] "BEAVRON INVESTMENTS LIMITED"
[7] "MITRALI LIMITED"
另一个,name,包含大约 700,000 个相似元素:
> name
[1] "MULTIPOINT HOLDINGS LIMITED"
[2] "NYASA PROPERTY LIMITED"
[3] "WHITE LODGE HOLDINGS LIMITED"
[4] "MULTIPOINT HOLDINGS LIMITED"
[5] "MULTIPOINT HOLDINGS LIMITED"
[6] "JBL INVESTMENT LIMITED"
[7] "DIMBLEBY LIMITED"
[8] "LIDL U.K. GMBH"
我想知道 proprietor 的哪些元素也在 name 中,考虑到可能有一些拼写错误或者像“LIMITED”这样的词也可以例如写成“LTD”。
我已经尝试过的:
proprietor %in% name返回一个空元素,我知道不是这样的intersect(proprietor, name)不起作用,因为我的向量中有重复项主要是,我尝试使用
agrep()进行循环以允许部分匹配:
for (i in 1:97034) {
if (is.null(agrep(proprietor[i], name, max.distance=0.1, value=TRUE, useBytes=TRUE, costs=NULL, ignore.case=TRUE))=="TRUE") {
test[i] <- 1
} else {
test[i] <- agrep(proprietor[i], name, max.distance=0.1, value=TRUE, useBytes=TRUE, costs=NULL, ignore.case=TRUE)
}
}
它返回错误“regcomp 错误:'Out of memory'”。我从 R 开始,所以 1)我可以看到这个循环不是最简单的方法 2)我不知道如何纠正这个内存不足错误。
- 我也尝试了这篇文章中给出的解决方案:Find matching strings between two vectors in R,但我无法实现它(错误消息:错误:断言 'tree->num_tags == num_tags' failed in execution regexp: file 'tre-compile. c',第 634 行。我找不到它的来源。)
任何有关如何解决此问题的建议将不胜感激!
【问题讨论】:
标签: r