R:agrep结果量词
R: agrep results quantifier
是否有内置的方法来量化 agrep
函数的结果?例如。在
agrep("test", c("tesr", "teqr", "toar"), max = 2, v=T)
[1] "tesr" "teqr"
tesr
距离 test
只有 1 个字符排列,而 teqr
是 2,而 toar
是 3,因此未找到。显然,tesr
比 teqr
具有更高的 "probability"。如何以排列数或百分比的形式检索它?
谢谢!
编辑:很抱歉没有把这个问题放在首位。我已经运行一个两步程序:agrep
得到我的列表,然后adist
得到N个排列。 adist
较慢,运行 时间是我数据集中的一个重要因素
Levenshtein 距离是从一个字符串到另一个字符串的编辑次数。包 'RecordLinkage' 可能很有趣。它提供了下面的编辑距离计算,它应该执行on par with agrep
。虽然它不会 return 与 agrep
.
相同的结果
library(RecordLinkage)
ld <- levenshteinDist("test", c("tesr", "teqr", "toar"))
c("tesr", "teqr", "toar")[which(ld < 3)]
使用 adist()
的另一个选项:
s <- c("tesr", "teqr", "toar")
s[adist("test", s) < 3]
或使用stringdist
library(stringdist)
s[stringdist("test", s, method = "lv") < 3]
给出:
#[1] "tesr" "teqr"
基准
x <- rep(s, 10e5)
library(microbenchmark)
mbm <- microbenchmark(
levenshteinDist = x[which(levenshteinDist("test", x) < 3)],
adist = x[adist("test", x) < 3],
stringdist = x[stringdist("test", x, method = "lv") < 3],
times = 10
)
给出:
Unit: milliseconds
expr min lq mean median uq max neval cld
levenshteinDist 840.7897 1255.1183 1406.8887 1398.4502 1510.5398 1960.4730 10 b
adist 2760.7677 2905.5958 2993.9021 2986.1997 3038.7692 3472.7767 10 c
stringdist 145.8252 155.3228 210.4206 174.5924 294.8686 355.1552 10 a
是否有内置的方法来量化 agrep
函数的结果?例如。在
agrep("test", c("tesr", "teqr", "toar"), max = 2, v=T)
[1] "tesr" "teqr"
tesr
距离 test
只有 1 个字符排列,而 teqr
是 2,而 toar
是 3,因此未找到。显然,tesr
比 teqr
具有更高的 "probability"。如何以排列数或百分比的形式检索它?
谢谢!
编辑:很抱歉没有把这个问题放在首位。我已经运行一个两步程序:agrep
得到我的列表,然后adist
得到N个排列。 adist
较慢,运行 时间是我数据集中的一个重要因素
Levenshtein 距离是从一个字符串到另一个字符串的编辑次数。包 'RecordLinkage' 可能很有趣。它提供了下面的编辑距离计算,它应该执行on par with agrep
。虽然它不会 return 与 agrep
.
library(RecordLinkage)
ld <- levenshteinDist("test", c("tesr", "teqr", "toar"))
c("tesr", "teqr", "toar")[which(ld < 3)]
使用 adist()
的另一个选项:
s <- c("tesr", "teqr", "toar")
s[adist("test", s) < 3]
或使用stringdist
library(stringdist)
s[stringdist("test", s, method = "lv") < 3]
给出:
#[1] "tesr" "teqr"
基准
x <- rep(s, 10e5)
library(microbenchmark)
mbm <- microbenchmark(
levenshteinDist = x[which(levenshteinDist("test", x) < 3)],
adist = x[adist("test", x) < 3],
stringdist = x[stringdist("test", x, method = "lv") < 3],
times = 10
)
给出:
Unit: milliseconds
expr min lq mean median uq max neval cld
levenshteinDist 840.7897 1255.1183 1406.8887 1398.4502 1510.5398 1960.4730 10 b
adist 2760.7677 2905.5958 2993.9021 2986.1997 3038.7692 3472.7767 10 c
stringdist 145.8252 155.3228 210.4206 174.5924 294.8686 355.1552 10 a