获取R中两个字符串之间的字符匹配长度

get length of character matching between two string in R

我有一个数据框,我需要比较两列并找到两个元素之间匹配字符的数量。

例如:x 和 y 是要比较的两个元素,如下所示:

x<- "1/2"
y<-"2/3"

我没有列出并用'/'分开,如下所示:

unlist(strsplit(x,"/"))->a
unlist(strsplit(y,"/"))->b

然后我用了pmatch:

pmatch(a,b,nomatch =0)
[1] 0 1

使用 sum() 知道有多少个字符匹配:

sum(pmatch(a,b,nomatch =0))
[1] 1

但是,当以另一种方式进行比较时:

 pmatch(b,a,nomatch = 0)
 [1] 2 0

既然两个字符串只有一个匹配项,为什么显示为2。可能是索引。但我需要得到字符串之间有多少字符相同,而不管比较 a vs b 或 b vs a.

有人可以帮助如何获得这个。

两者都

sum(pmatch(b, a, nomatch = 0) != 0)    # 1
sum(pmatch(a, b, nomatch = 0) != 0)    # 1

return相同的值。

Per ?pmatchpmatch 在第二个参数中寻找第一个参数元素的匹配项。

例如,第一个列表中的“2”与第二个列表中的第二个元素匹配。

> pmatch(c("2", "1"),c("3","2"),nomatch =0)
# [1] 2 0

了解匹配元素数量的一种方法是对非零元素求和:

sum(pmatch(c("2", "1"),c("3","2"),nomatch =0) != 0)
# [1] 1

另一个选项可以是

sum(b %in% a)
[1] 1
sum(a %in% b)
[1] 1