R语言如何检测vector向量中是否存在指定连续双元素组合
R语言检测向量中是否存在指定连续元素对的实现方法
核心思路:提取向量中所有相邻的两个元素组成配对,和目标配对比对是否存在完全匹配的项即可。
测试用示例向量:
vec = c(4,4,3,1,2,2)
方法1:矩阵配对比对法(兼容性最强,无特殊边界问题)
直接生成所有连续相邻对的矩阵,逐行比对是否匹配目标,通用实现函数如下:
check_consecutive_pair <- function(vec, target_pair) { # 处理向量长度不足2的边界情况 if (length(vec) < 2) return(FALSE) # 生成所有连续相邻对,每一行对应一个配对 consecutive_pairs <- cbind(vec[-length(vec)], vec[-1]) # 逐行判断是否和目标配对完全相等,只要有一个匹配就返回TRUE any(apply(consecutive_pairs, 1, function(row) all(row == target_pair))) }
测试效果:
# 测试配对(3,1) check_consecutive_pair(vec, c(3,1)) # 输出:TRUE # 测试配对(4,2) check_consecutive_pair(vec, c(4,2)) # 输出:FALSE
方法2:字符串匹配法(写法更简洁)
把整个向量按统一分隔符拼接为字符串,再匹配目标配对的拼接字符串即可,注意分隔符要选择向量元素中不会出现的字符:
# 用逗号作为分隔符拼接向量 vec_str <- paste(vec, collapse = ",") # 检测(3,1)是否存在 grepl("3,1", vec_str) # 输出:TRUE # 检测(4,2)是否存在 grepl("4,2", vec_str) # 输出:FALSE
内容的提问来源于stack exchange,提问作者userITmcmc
相关产品推荐
相关产品推荐

