r - 在两列数据框上使用 adist

标签 r levenshtein-distance

我想用 adist 来计算每行两列值之间的编辑距离。

我或多或少是这样使用它的:

A <- c("mad","car")
B <- c("mug","cat")
my_df <- data.frame(A,B)
my_df$dist <- adist(my_df$A, my_df$B, ignore.case = TRUE)
my_df <- my_df[order(dist),]

最后两行与我的情况相同,但实际数据框看起来有点不同 - 我原始数据框的列是字符类型,而不是因子。此外,dist 列似乎作为 2 列矩阵返回,我不知道为什么会这样。

更新: 我读了一点,发现我需要将它应用于行,所以我的新代码如下:

apply(my_df, 1, function(d) adist(d[1], d[2]))

它工作正常,但对于我的原始数据集,通过列号调用它是不切实际的,我如何在这个函数中引用列名?

最佳答案

使用tidyverse方法,您可以使用以下代码:

library(tidyverse)
A <- c("mad","car")
B <- c("mug","cat")
my_df <- data.frame(A,B)

my_df %>% 
    rowwise() %>% 
    mutate(Lev_dist=adist(x=A,y=B,ignore.case=TRUE))

关于r - 在两列数据框上使用 adist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48020171/

相关文章:

java - 文本自动更正的动态算法

r - 1-1000 中的 x 和 1-1000 中的 y 使用 R 的 x^y 有多少独特的幂

ggplot 和 png 的 rmarkdown 错误

html - 是否可以提取 R shiny 应用程序的 HTML 代码,这样它就可以在没有 R 的情况下使用?

php - 编辑距离 : how to better handle words swapping positions?

algorithm - 如何修改编辑编辑距离以将 "adjacent letter exchanges"计为 1 次编辑

R split apply 与 dplyr 结合使用 - 如何保持切片产生的 NA

r - 如何按日期对数据框进行分组?

python - 仅通过插入和删除来查找编辑距离的变化?

algorithm - Levenshtein 的编辑距离算法如何工作?