我想用 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/