首页 文章

如何检查集合A是否是R中集合B的子集? [重复]

提问于
浏览
2

这个问题在这里已有答案:

我有两个集A和B.我想检查集合A是否是集合B的子集 . 我试过我知道R中的集合操作 . 我尝试了交叉,union,setdiff . 但是,没有他们是有帮助的 . 例如,

A = c(1, 2, 3, 4)

B = c(1, 2, 3, 4, 5)

我正在寻找一个返回TRUE或FALSE的函数 . 我使用了 A %in% B 并比较了总和和长度,它完成了同样的工作 . 但我觉得有一种更好的做法 .

length(A %in% B) == sum(A %in% B) 返回 TRUElength(B %in% A) == sum(B %in% A) 返回 FALSE .

3 回答

  • 2

    我们可以 all%in%

    all(A %in% B)
    #[1] TRUE
    
    all(B %in% A)
    #[1] FALSE
    
  • 13

    另一种方法,检查 A 是否是 B 的子集

    setequal(intersect(A,B), A)
    # [1] TRUE
    

    检查 B 是否是 A 的子集

    setequal(intersect(A,B), B)
    # [1] FALSE
    
  • -1
    a <- function(x,y)sum(length(x)<=length(y))
    a(A,B)
    [1] 1
    a(B,A)
    [1] 0
    

相关问题