2

max.distance をゼロに制限しているのに、なぜ agrep は一致を見つけるのですか? adist は、2 つの挿入が必要であることを正しく教えてくれます...

> agrep("ab", "abcd", max = list(del = 0, ins = 0, sub = 0), value = T)
[1] "abcd"
> drop(attr(adist("ab", "abcd", counts = TRUE), "counts"))
ins del sub 
  2   0   0 

> sessionInfo()
R version 2.15.1 (2012-06-22)
Platform: x86_64-pc-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=German_Austria.1252  LC_CTYPE=German_Austria.1252   
[3] LC_MONETARY=German_Austria.1252 LC_NUMERIC=C                   
[5] LC_TIME=German_Austria.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] formatR_0.6   vegan_2.0-4   permute_0.7-0

loaded via a namespace (and not attached):
[1] grid_2.15.1    lattice_0.20-6 tools_2.15.1 
4

1 に答える 1

3

「ab」は「abcd」の最初の2文字と完全に一致することに注意してください(挿入は必要ありません!)。これが、@joranが参照しているNoteセクションが示していることです。

# Since ab matches the substring of abcd that is the first two characters
# we get a match
agrep("ab", "abcd", val = T)
#[1] "abcd"

# Since we only need 1 insertion to make ac into abc and we set max=1
# we get a match
agrep("ac", "abcd", max = 1, val = T)
#[1] "abcd"

# ac doesn't directly match any part of the substring and we set max=0
# so no match
agrep("ac", "abcd", max = 0, val = T)
#character(0)
于 2012-09-27T23:07:22.513 に答える