I have a list of vectors such as:
>list
[[1]]
[1] "a" "m" "l" "s" "t" "o"
[[2]]
[1] "a" "y" "o" "t" "e"
[[3]]
[1] "n" "a" "s" "i" "d"
我希望能够找到它们之间的匹配项,并与其余项进行比较(例如在第一个和其他两个之间,在第二个和其他两个之间,以此类推),并保留具有最高匹配数的一对。我可以使用“for”循环和成对相交来实现。例如:
for (i in 2:3) { intersect(list[[1]],list[[i]]) }
然后将输出保存到向量或其他数据结构中。然而,对于我来说,这似乎是非常低效的(因为我有数千个而不是3个),我想知道是否R有一些内置函数可以以聪明的方式完成这项任务。
问题是:
是否有一种方法可以查找一个向量与向量列表之间的匹配,而不需要显式使用“for”循环?
outer()
的函数,可以用于list
,然后执行类似于outer(foo,foo,function(x,y)length(intersect(x,y)))
的操作,其中foo
是你的list
。但是,你可能无法通过这种方式打败for
循环:https://dev59.com/AHI-5IYBdhLWcg3wsKz9#1722565。 - Stephan Kolassa