Prz*_*zeM 1 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),]
Run Code Online (Sandbox Code Playgroud)
最后两行与我的情况相同,但实际数据框看起来有点不同 - 我的原始数据框的列是字符类型,而不是因子。此外, dist 列似乎作为 2 列矩阵返回,我不知道为什么会发生这种情况。
更新:我读了一点,发现我需要将它应用于行,所以我的新代码如下:
apply(my_df, 1, function(d) adist(d[1], d[2]))
Run Code Online (Sandbox Code Playgroud)
它工作正常,但对于我通过列号调用它的原始数据集是不切实际的,我如何在这个函数中引用列名?
使用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))
Run Code Online (Sandbox Code Playgroud)