获取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 ?pmatch
,pmatch
在第二个参数中寻找第一个参数元素的匹配项。
例如,第一个列表中的“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
我有一个数据框,我需要比较两列并找到两个元素之间匹配字符的数量。
例如: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 ?pmatch
,pmatch
在第二个参数中寻找第一个参数元素的匹配项。
例如,第一个列表中的“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