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

R语言统计向量从末尾到首个a之间r元素的出现次数与位置

实现思路
  • 第一步:提取向量中所有值为a的位置,若向量不存在a,则遍历范围覆盖整个向量
  • 第二步:取所有a位置的最大值,也就是最靠近向量末尾的a的位置,我们只需要检查该位置之后到向量末尾的所有元素即可
  • 第三步:在上述确定的范围内,筛选出所有值为r的原向量索引,按从大到小排序(对应从末尾倒序遍历的顺序)
  • 第四步:返回结果的第一个元素为符合条件的r的总数量,后续依次为排序后的索引
代码实现
some.function <- function(V) {
  # 定位所有值为a的元素位置
  a_pos <- which(V == "a")
  # 确定需要检查的元素起始位置
  if (length(a_pos) == 0) {
    check_start <- 1
  } else {
    check_start <- max(a_pos) + 1
  }
  vec_len <- length(V)
  # 没有需要检查的元素直接返回0
  if (check_start > vec_len) {
    return(0)
  }
  # 筛选范围内r的位置,倒序排列
  r_pos <- sort(which(V[check_start:vec_len] == "r") + check_start - 1, decreasing = TRUE)
  # 拼接结果:数量 + 位置索引
  return(c(length(r_pos), r_pos))
}
测试验证
# 测试用例1
> some.function(c('a', 0, 'a', 'r', 'r', 0, 'r', 'a', 0, 'a', 'r' , 0, 'r'))
[1]  2 13 11

# 测试用例2
> some.function(c('a', 0, 'a', 'r', 'r', 0, 'r', 'a', 0, 'a', 'r'))
[1]  1 11

# 测试用例3
> some.function(c('a', 0, 'a', 'r', 'r', 0, 'r'))
[1] 3 7 5 4

# 测试用例4
> some.function(c('a', 0, 'a', 'r', 'r', 0, 'r', 0))
[1] 3 7 5 4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 09:36:07