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

R语言中如何在循环内定义可变长度的向量元素选择范围

R语言可变长度分段索引实现方法

核心思路是通过cumsum()函数计算各分段长度的累积值,直接推导每个迭代对应的索引上下界:

完整实现代码

vec <- c(50, 30, 20)
# 预计算每个分段的结束索引
cum_end <- cumsum(vec)

for (i in seq_along(vec)) {
  # 计算当前分段起始索引:第一个分段起始为1,后续分段为上一个分段结束索引+1
  idx_min <- if (i == 1) 1 else cum_end[i-1] + 1
  idx_max <- cum_end[i]
  # 此处可替换为你自己的逻辑,比如用 idx_min:idx_max 对目标向量做切片
  print(paste0(idx_min, ":", idx_max))
}

运行输出

[1] "1:50"
[1] "51:80"
[1] "81:100"

简化写法(无需循环内判断)

可以提前计算好所有分段的起始索引,代码更简洁高效:

vec <- c(50, 30, 20)
cum_end <- cumsum(vec)
cum_start <- c(1, cum_end[-length(cum_end)] + 1)

for (i in seq_along(vec)) {
  idx_range <- cum_start[i]:cum_end[i]
  print(paste0(min(idx_range), ":", max(idx_range)))
}

注意:使用前建议先校验sum(vec)和待切片的原始向量长度一致,避免出现索引越界问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 08:54:04