r - 一个向量上的 stringdist

标签 r stringdist

我正在尝试使用 stringdist 来识别同一向量中最大距离为 1 的所有字符串,然后发布匹配项。这是数据示例:

起始数据框:

a = c("tom", "tomm", "alex", "alexi", "chris", "jen", "jenn", "michell") 
b = c(NA) 
df = data.frame(a,b) 

期望的结果:

a = c("tom", "tomm", "alex", "alexi", "chris", "jen", "jenn", "michell") 
b = c("tomm", "tom", "alexi", "alex", 0, "jenn", "jen", 0) 
df = data.frame(a,b) 

我可以将 stringdist 用于两个向量,但在将它用于一个向量时遇到问题。感谢您的帮助,R 社区。

最佳答案

这是一种可能的方法:

a = c("tom", "tomm", "alex", "alexi", "chris", "jen", "jenn", "michell") 

min_dist <- function(x, method = "cosine", tol = .5){
    y <- vector(mode = "character", length = length(x))
    for(i in seq_along(x)){
        dis <- stringdist(x[i], x[-i], method)
        if (min(dis) > tol) {
            y[i] <- "0"
        } else {
            y[i] <- x[-i][which.min(dis)]
        }
    }
    y
}

min_dist(a, 'cosine', .4)

## [1] "tomm"  "tom"   "alexi" "alex"  "0"      "jenn"  "jen"   "0"

关于r - 一个向量上的 stringdist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41560251/

相关文章:

r - 在另一个级别之后更改一个因素的级别

R 插入符号 rpart 返回 `[.data.frame` 中的错误(m,实验室): undefined columns selected

r - 使用 group_by 并从 dplyr 中汇总不包含 group_by 变量的所有行

r - R中两个句子之间的词级编辑距离

r - 通过 stringmatch 与 dplyr 和 stringdist 合并两个数据帧

从 R 数据框中删除包含相同或单词排列句子的行

r - 成对计算所有行之间给定字符的位置匹配数的快速方法

r - 在 R/Splus 中编写函数来处理多种数据类型?

r - 找到至少由 N 分隔的数字的最大子集的最佳方法是什么?