【发布时间】:2016-08-21 03:20:23
【问题描述】:
(我希望这已经被问到/回答了。如果是这样,抱歉,我找不到答案。)
假设我有 6 个向量。如何快速检查每个向量的任何元素是否等于所有其他向量的任何元素?
我知道我可以执行以下操作,但感觉真的很麻烦/史前/容易出错:
any(vec1 %in% vec2, vec1 %in% vec3, vec1 %in% vec4, vec1 %in% vec5, vec1 %in% vec6,
vec2 %in% vec3, vec2 %in% vec4, vec2 %in% vec5, vec2 %in% vec6,
vec3 %in% vec4, vec3 %in% vec5, vec3 %in% vec6,
vec4 %in% vec5, vec4 %in% vec6,
vec5 %in% vec6)
谢谢。
顺便说一句,我检查了How to find common elements from multiple vectors?,这似乎是在询问如何识别 each 向量中存在的元素,而不是任何向量中的任何元素是否相等。
【问题讨论】:
-
是任何特定类型的向量吗?
-
@SeverinPappadeux,就我而言,他们都是
int。如果某些向量属于不同类型,我想答案可能会有所不同。 -
您的代码将
any包装到所有比较中,但我认为这会产生问题,即如果向量的长度不同,%in%会给出逻辑向量输出,当我们换行时使用any(如您所示),只要在比较中的任何单个元素中有一个TRUE,输出将为TRUE。 -
@akrun,这正是我要找的。但是,我同意知道 which 向量具有匹配的元素可能会有所帮助(如果解决方案可以显示哪些 elements 匹配,则可能会更酷,而无需执行额外的 vec1 %in % vec2 比较,例如)。
-
我在下面发布了一个解决方案,最后一个选项就是你展示的那个。请检查这是否适合您。另外,如果没有,请考虑使用一些示例和基于示例的预期输出来更新您的帖子