如何检查集合A是否是R中集合B的子集?

Chr*_*ris 2 r set subset

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

A = c(1, 2, 3, 4)
Run Code Online (Sandbox Code Playgroud)

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

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

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

akr*_*run 16

我们可以使用all与%in%

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

all(B %in% A)
#[1] FALSE
Run Code Online (Sandbox Code Playgroud)


989*_*989 5

另一种方法是检查是否A是B

setequal(intersect(A,B), A)
# [1] TRUE
Run Code Online (Sandbox Code Playgroud)

检查是否B是一个子集A

setequal(intersect(A,B), B)
# [1] FALSE
Run Code Online (Sandbox Code Playgroud)