在R中,我有两个字符向量a和b。
a <- c("abcdefg", "hijklmnop", "qrstuvwxyz")
b <- c("abXdeXg", "hiXklXnoX", "Xrstuvwxyz")
我想要一个函数来计算a的每个元素和b的相应元素之间的字符不匹配。使用上面的示例,这样的函数应该返回c(2,3,1)
。没有必要对齐字符串。
我需要逐个字符地比较每对字符串,并计算每对中的匹配和/或不匹配。 R?
或者,以另一种方式提问,是否有一个函数可以在两个字符串之间给出 编辑距离 ,其中唯一允许的操作是替换(忽略)插入或删除)?
答案 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