7

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

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

我想要一个函数来计算 a 的每个元素和 b 的相应元素之间的字符不匹配。使用上面的示例,这样的函数应该返回c(2,3,1). 无需对齐字符串。我需要逐个字符地比较每对字符串并计算每对中的匹配和/或不匹配。R中是否存在任何此类功能?

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

4

2 回答 2

8

使用一些mapply乐趣:

mapply(function(x,y) sum(x!=y),strsplit(a,""),strsplit(b,""))
#[1] 2 3 1
于 2013-06-24T22:26:37.190 回答
1

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

mapply(adist,a,b)
abcdefg  hijklmnop qrstuvwxyz 
     2          3          1 
于 2013-06-24T23:32:43.117 回答