我有一个列表,其中有10个元素。我正在显示我列表中的第8,9和10个元素。
> a[8]
[[1]]
[1] BUFMARINE COLDEPS M1RED ORGM1T3 JELLYBIN
[6] MULTITASK PBA UVRAYS UVBRO
> a[9]
[[1]]
[1] PBA MULTITASK M1RED ARITHRO ORGM1T3
[6] BACKUP BUFMARINE FIRELANE PRITH SOLTS
[11]REDMOS
> a[10]
[[1]]
[1] PRITH M1RED BUFMARINE ORGM1T3 OLAX
[6] PBA FIRELANE ANADS ZEPRO BLUEPACK
[11]SOLTS ARACUS SOLVIN SUES
如您所见,列表中每个元素中的元素数量不同。 在[8]和[9]中,我们可以看到有5个匹配的字符串,即BUFMARINE,M1RED,ORGM1T3,MULTITASK和PBA。 a [8]和[9]中的总字符串是9 + 11 = 20。因此,我们可以说a [8]匹配[9]乘以(5 * 2 * 100)/ 20 = 50% 这样我想匹配所有组合并找到哪两组列表元素具有更大的字符串匹配百分比。字符串在每个列表中的顺序对我来说并不重要,因此当采用两个列表项(ex [2]和[4])的组合时,我想将a [2]的每个字符串与每个a [4]的字符串,看看我们是否匹配。
答案 0 :(得分:0)
像
这样的东西set.seed(3)
( lst <- replicate(3, sample(letters[1:5], sample(1:5, 1), F)) )
# [[1]]
# [1] "e"
#
# [[2]]
# [1] "b" "c"
#
# [[3]]
# [1] "a" "b" "d" "c"
( combis <- combn(seq(lst), 2) )
# [,1] [,2] [,3]
# [1,] 1 1 2
# [2,] 2 3 3
apply(combis, 2, function(x) {
length(intersect(lst[[x[1]]], lst[[x[2]]])) / ( length(lst[[x[1]]])+length(lst[[x[2]]]) )*100
})
# [1] 0.00000 0.00000 33.33333