bbi*_*bip 4 r levenshtein-distance
我有两个字符串向量:
a <- c('Alpha', 'Beta', 'Gamma', 'Delta')
b <- c('Epsilon', 'Zeta', 'Eta', 'Theta')
Run Code Online (Sandbox Code Playgroud)
我想计算每对字符串的编辑距离或编辑距离。
如果我使用
stringdist(a, b, method="lv")
Run Code Online (Sandbox Code Playgroud)
输出是一个向量,其中包含向量 a 中每个字符串和向量 b 中相应字符串的编辑距离(即 Alpha 与 Epsilon、Beta 与 Zeta 等)。
我需要的是一个向量中的每个字符串与另一个向量中的所有其他字符串之间的成对比较(即 Alpha 与 Epsilon、Alpha 与 Zeta、Alpha 与 Eta、Alpha 与 Theta、Beta 与 Epsilon 等) 。
谢谢
有一种简单的方法可以使用stringdistmatrix
一些重塑来做到这一点:
library(stringdist)
library(tidyverse)
a <- c('Alpha', 'Beta', 'Gamma', 'Delta')
b <- c('Epsilon', 'Zeta', 'Eta', 'Theta')
stringdistmatrix(a, b, method = "lv", useNames = "string") %>%
as_tibble(rownames = "a") %>%
pivot_longer(-1, names_to = "b", values_to = "dist")
#> # A tibble: 16 x 3
#> a b dist
#> <chr> <chr> <dbl>
#> 1 Alpha Epsilon 7
#> 2 Alpha Zeta 4
#> 3 Alpha Eta 4
#> 4 Alpha Theta 4
#> 5 Beta Epsilon 7
#> 6 Beta Zeta 1
#> 7 Beta Eta 2
#> 8 Beta Theta 2
#> 9 Gamma Epsilon 7
#> 10 Gamma Zeta 4
#> 11 Gamma Eta 4
#> 12 Gamma Theta 4
#> 13 Delta Epsilon 6
#> 14 Delta Zeta 2
#> 15 Delta Eta 3
#> 16 Delta Theta 3
Run Code Online (Sandbox Code Playgroud)