R语言 如何比较向量列表以确定它们是否包含公共元素?

vbopmzt1  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(130)

我有一个向量列表,长度可变。我想知道,对于所有的成对向量,它们是否包含共同的信息?下面是一个例子:
列表x有三个向量a,B和c。a和c都包含1,所以这个比较应该返回true。没有其他比较应该返回true。我已经尝试了以下解决方案。我认为outer是解决这个问题的最佳方法,但它目前对所有比较都返回true,这不是我预期的结果。

xx = list(a = 1,
          b = c(2, 3),
          c = c(1, 4, 6))

outer(xx, xx, "%in%")

outer(xx, xx, function(x, y) x %in% y)

func2 = function(x, y){z = cbind(x, y); z[,1] %in% z[,2]}
outer(xx, xx, func2)

Map("%in%", xx, xx)

预期结果:

a,  b,  c
a, T,  F,  T
b, F,  T,  F
c, T,  F,  T
jbose2ul

jbose2ul1#

我发现了这一点-尽管我不明白这个解决方案背后的逻辑。
看起来在Vectorize中 Package 函数提供了预期的输出。

func3 = function(x, y){any(x %in% y)}
outer(xx, xx, Vectorize(func3))

相关问题