You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言实现:识别向量重复模式并补全缺失的模式元素

R模式补全解决方案

实现思路

基于给定的固定5元素顺序模式["A", "B", "C", "D", "E"],通过指针追踪当前循环预期的元素位置,遍历现有向量逐一匹配,不匹配时自动插入缺失的预期元素,最终补满10次完整重复的模式即可。

完整实现代码

# 定义基准模式与预期重复次数
base_pattern <- c("A", "B", "C", "D", "E")
expected_cycles <- 10

# 原始向量
my.vector <- c("A", "B", "C", "D", "E", "A", "B", "C", "D", "E", "B", "C", 
               "D", "E", "B", "C", "D", "E", "B", "C", "D", "E", "B", "C", "D", 
               "E", "B", "C", "D", "E", "B", "C", "D", "E", "A", "B", "C", "D", 
               "E", "B")

# 初始化变量:结果向量、当前模式位置指针、已完成循环次数
filled_vec <- c()
pattern_ptr <- 1
completed_cycles <- 0
vec_idx <- 1

# 遍历原始向量匹配补全
while (vec_idx <= length(my.vector) && completed_cycles < expected_cycles) {
  expected_item <- base_pattern[pattern_ptr]
  real_item <- my.vector[vec_idx]
  
  if (real_item == expected_item) {
    # 元素匹配,直接存入结果
    filled_vec <- c(filled_vec, real_item)
    vec_idx <- vec_idx + 1
    pattern_ptr <- pattern_ptr + 1
  } else {
    # 元素缺失,插入预期元素
    filled_vec <- c(filled_vec, expected_item)
    pattern_ptr <- pattern_ptr + 1
  }
  
  # 完成单次循环后重置指针,更新循环计数
  if (pattern_ptr > length(base_pattern)) {
    pattern_ptr <- 1
    completed_cycles <- completed_cycles + 1
  }
}

# 补全最后一轮未完成的剩余元素
while (completed_cycles < expected_cycles) {
  filled_vec <- c(filled_vec, base_pattern[pattern_ptr])
  pattern_ptr <- pattern_ptr + 1
  if (pattern_ptr > length(base_pattern)) {
    pattern_ptr <- 1
    completed_cycles <- completed_cycles + 1
  }
}

# 验证补全结果:应返回TRUE
identical(filled_vec, rep(base_pattern, expected_cycles))

输出说明

运行代码后得到的filled_vec就是补全后的完整向量,长度为固定的5*10=50,所有缺失的元素都会按照模式顺序自动补充。

内容的提问来源于stack exchange,提问作者TarJae

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 20:51:02