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

R语言seq函数的by参数能否支持多间隔向量化设置?

实现R语言seq函数的向量化by参数

R原生的seq()函数仅支持by参数传入单个间隔值,无法直接使用多间隔的向量。要实现向量化的by参数,我们可以自定义一个函数来处理这类需求,以下是通用实现方案:

自定义函数实现

seq_vec_by <- function(from, to, by) {
  result <- from
  current <- from
  idx <- 1
  len_by <- length(by)
  # 判断序列的增减方向
  dir <- sign(to - from)
  
  while(TRUE) {
    # 循环取用by中的间隔值
    step <- by[idx %% len_by + 1]
    current <- current + step
    
    # 根据方向判断是否超出终点范围
    if ((dir > 0 && current > to) || (dir < 0 && current < to)) {
      break
    }
    
    result <- c(result, current)
    idx <- idx + 1
  }
  
  result
}

测试示例

示例1:间隔为c(1,2)

seq_vec_by(1, 10, by = c(1,2))
# 输出:[1]  1  2  4  5  7  8 10

示例2:间隔为1:5

seq_vec_by(1, 100, by = 1:5)
# 输出:[1]  1  2  4  7 11 16 17 19 22 26 31 37 38 40 43 47 52 58 59 61 64 68 73 79 80 82 85 89 94 100

示例3:递减序列,间隔为c(-3,-8)

seq_vec_by(8, -5, by = c(-3,-8))
# 输出:[1]  8  5 -3

函数说明

  • 自动判断序列的增减方向,适配递增和递减场景
  • 循环复用by向量中的间隔值,直到当前值超出终点范围
  • 每次累加后检查是否符合终点限制,确保结果不会超出from到to的区间

内容的提问来源于stack exchange,提问作者Maël

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:16:34