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

时间:2018-08-17 19:35:58

标签: r string string-comparison

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

例如: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与b还是b与a比较,我都需要获取字符串之间有多少个相同的字符。

有人可以帮忙得到这个吗?

3 个答案:

答案 0 :(得分:0)

两者

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

返回相同的值。

答案 1 :(得分:0)

对于每个?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

答案 2 :(得分:0)

另一个选项可能是

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