如何快速查看R中两个以上向量的任何元素是否相等?

丹尼尔·弗莱彻(Daniel Fletcher)

(我希望这个问题已经被询问/回答。如果是,抱歉,我无法找到答案。)

假设我有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)

谢谢。

顺便说一句,我检查了如何从多个向量中找到共同的元素?而且这似乎是在询问如何识别每个向量中存在的元素,而不是寻找任何向量中的任何元素是否相等。

利斯特尔

如果将向量放在列表中,则使用它们将更加容易:

# make sample data
set.seed(47)
x <- replicate(6, rpois(3, 10), simplify = FALSE) 

str(x)
# List of 6
#  $ : int [1:3] 16 12 10
#  $ : int [1:3] 9 10 6
#  $ : int [1:3] 10 14 4
#  $ : int [1:3] 7 6 4
#  $ : int [1:3] 12 8 7
#  $ : int [1:3] 7 11 8

现在迭代lapply

lapply(x, function(y){sapply(x, function(z){y %in% z})})

## [[1]]
##      [,1]  [,2]  [,3]  [,4]  [,5]  [,6]
## [1,] TRUE FALSE FALSE FALSE FALSE FALSE
## [2,] TRUE FALSE FALSE FALSE  TRUE FALSE
## [3,] TRUE  TRUE  TRUE FALSE FALSE FALSE
## 
## [[2]]
##       [,1] [,2]  [,3]  [,4]  [,5]  [,6]
## [1,] FALSE TRUE FALSE FALSE FALSE FALSE
## [2,]  TRUE TRUE  TRUE FALSE FALSE FALSE
## [3,] FALSE TRUE FALSE  TRUE FALSE FALSE
## ...    ...  ...   ...   ...   ...   ...

它是每个向量的矩阵,其中行是该向量的元素,列是列表中的每个向量,并且值指示该元素是否在该向量中。显然,每个元素都将与自己匹配,因此第一个元素的第一TRUE列为all ,第二个元素的第二列等,以此类推。其他TRUEs表示交叉向量匹配。如果长度不一致,它将返回相同信息的嵌套列表,而不是矩阵。如果您仍然希望使用嵌套列表,请更改sapplylapply

或者,如果您只想为每个向量匹配一个向量,

str(lapply(x, function(y){which(sapply(x, function(z){any(y %in% z)}))}))

## List of 6
##  $ : int [1:4] 1 2 3 5
##  $ : int [1:4] 1 2 3 4
##  $ : int [1:4] 1 2 3 4
##  $ : int [1:5] 2 3 4 5 6
##  $ : int [1:4] 1 4 5 6
##  $ : int [1:3] 4 5 6

其中每个元素仍包含自己作为匹配项。取出which布尔值而不是索引。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在R中查找向量的两个或多个连续元素是否相等

来自分类Dev

如何查看两个多态对象是否相等?

来自分类Dev

RcppArmadillo 中的两个向量相等?

来自分类Dev

检查元素是否在两个向量中的最快方法

来自分类Dev

如何检查Bash中两个路径是否相等?

来自分类Dev

如何比较模板中的两个typedesc是否相等

来自分类Dev

检查两个向量是否在R中包含相同(无序)元素

来自分类Dev

如何使用Java查看两个矩形是否有一个相等的点?

来自分类Dev

如何使用Java查看两个矩形是否有一个相等的点?

来自分类Dev

比较两个对象以查看是否相等

来自分类Dev

如何获得R中两个向量之间的元素的第n个匹配项?

来自分类Dev

如何在Python中找到两个向量具有相等元素的索引集

来自分类Dev

如何使用PowerShell比较两个文本文件以查看它们是否相等?

来自分类Dev

如何在CppUnitTest框架中断言两个向量是否相等

来自分类Dev

如何检查两个不同类型的向量是否相等

来自分类Dev

如何比较R中两个向量中元素的顺序?

来自分类Dev

检测元素是否在python列表中的两个相等元素之间

来自分类Dev

如何比较两个向量的相等性?

来自分类Dev

如何快速查看imageView是否为nil?

来自分类Dev

创建一个元素与r中的两个向量完全交叉的向量

来自分类Dev

如何对R中两个不等向量的值求和?

来自分类Dev

如何对R中两个不等向量的值求和?

来自分类Dev

如何根据列表中的两个不同值获得 2 个计数并检查两个计数是否相等?

来自分类Dev

如何匹配正则表达式中两个或两个以上连续空格之外的任何内容?

来自分类Dev

如何快速检查Excel中的两列的值是否相等?

来自分类Dev

如何在DataGrip中快速查看表?

来自分类Dev

如何在Matlab中向量化两个for循环以加快速度

来自分类Dev

如何在Matlab中向量化两个for循环以加快速度

来自分类Dev

检查具有相同类的两个元素的两个 ID 是否相等

Related 相关文章

  1. 1

    如何在R中查找向量的两个或多个连续元素是否相等

  2. 2

    如何查看两个多态对象是否相等?

  3. 3

    RcppArmadillo 中的两个向量相等?

  4. 4

    检查元素是否在两个向量中的最快方法

  5. 5

    如何检查Bash中两个路径是否相等?

  6. 6

    如何比较模板中的两个typedesc是否相等

  7. 7

    检查两个向量是否在R中包含相同(无序)元素

  8. 8

    如何使用Java查看两个矩形是否有一个相等的点?

  9. 9

    如何使用Java查看两个矩形是否有一个相等的点?

  10. 10

    比较两个对象以查看是否相等

  11. 11

    如何获得R中两个向量之间的元素的第n个匹配项?

  12. 12

    如何在Python中找到两个向量具有相等元素的索引集

  13. 13

    如何使用PowerShell比较两个文本文件以查看它们是否相等?

  14. 14

    如何在CppUnitTest框架中断言两个向量是否相等

  15. 15

    如何检查两个不同类型的向量是否相等

  16. 16

    如何比较R中两个向量中元素的顺序?

  17. 17

    检测元素是否在python列表中的两个相等元素之间

  18. 18

    如何比较两个向量的相等性?

  19. 19

    如何快速查看imageView是否为nil?

  20. 20

    创建一个元素与r中的两个向量完全交叉的向量

  21. 21

    如何对R中两个不等向量的值求和?

  22. 22

    如何对R中两个不等向量的值求和?

  23. 23

    如何根据列表中的两个不同值获得 2 个计数并检查两个计数是否相等?

  24. 24

    如何匹配正则表达式中两个或两个以上连续空格之外的任何内容?

  25. 25

    如何快速检查Excel中的两列的值是否相等?

  26. 26

    如何在DataGrip中快速查看表?

  27. 27

    如何在Matlab中向量化两个for循环以加快速度

  28. 28

    如何在Matlab中向量化两个for循环以加快速度

  29. 29

    检查具有相同类的两个元素的两个 ID 是否相等

热门标签

归档