R语言如何实现仅当两个集合完全绝对匹配时才返回TRUE
R 判断两个集合完全匹配的实现方法
方法1:直接使用基础包内置的setequal()函数
R 基础环境内置了专门用于集合相等判断的setequal()函数,天然满足「两个集合元素完全一致,无多余/缺失元素」的需求,且自动忽略元素顺序:
# 你的示例代码 total_years <- as.factor(c("2020","2021")) # 和包含多余元素的向量比较,返回FALSE(符合需求) setequal(total_years, c("2017","2018","2019", "2020", "2021")) # 输出:[1] FALSE # 和元素完全一致的向量比较(顺序不同也可),返回TRUE setequal(total_years, c("2021", "2020")) # 输出:[1] TRUE
方法2:手动实现双向包含判断
如果想自己写逻辑,只需要同时验证两个集合互相完全包含即可:
setequal_manual <- function(x, y) { all(x %in% y) && all(y %in% x) } # 测试 setequal_manual(total_years, c("2017","2018","2019", "2020", "2021")) # 输出:[1] FALSE
特殊场景说明
如果你需要同时匹配元素顺序、重复元素数量,不属于纯集合比较的场景,可以使用identical()搭配排序实现:
# 示例:带重复元素的严格匹配 x <- c("2020", "2020", "2021") y <- c("2020", "2021") # 纯集合比较返回TRUE setequal(x, y) # 输出:[1] TRUE # 严格匹配重复元素数量返回FALSE identical(sort(x), sort(y)) # 输出:[1] FALSE
内容的提问来源于stack exchange,提问作者manu p
相关产品推荐
相关产品推荐

