如何使用替换距离比较两个字符串以查找R中匹配的字符数?

时间:2013-06-24 22:12:34

标签: r string-comparison edit-distance string-substitution

在R中,我有两个字符向量a和b。

a <- c("abcdefg", "hijklmnop", "qrstuvwxyz")
b <- c("abXdeXg", "hiXklXnoX", "Xrstuvwxyz")

我想要一个函数来计算a的每个元素和b的相应元素之间的字符不匹配。使用上面的示例,这样的函数应该返回c(2,3,1)。没有必要对齐字符串。 我需要逐个字符地比较每对字符串,并计算每对中的匹配和/或不匹配。 R?

中是否存在任何此类功能

或者,以另一种方式提问,是否有一个函数可以在两个字符串之间给出 编辑距离 ,其中唯一允许的操作是替换(忽略)插入或删除)?

2 个答案:

答案 0 :(得分:6)

使用一些mapply乐趣:

mapply(function(x,y) sum(x!=y),strsplit(a,""),strsplit(b,""))
#[1] 2 3 1

答案 1 :(得分:1)

另一种选择是使用adist计算字符向量之间的近似字符串距离:

mapply(adist,a,b)
abcdefg  hijklmnop qrstuvwxyz 
     2          3          1