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

如何在R语言中将连续整数向量优雅划分为k个尽可能等长的分组?

实现方法

在R语言里有几种优雅的方式可以实现这个分组需求,以下是常用的方案:

1. 基础R:split() + gl()函数(推荐)

gl()函数能直接生成指定长度的分组因子,当总元素数无法被组数整除时,会自动把剩余元素依次分配到前面的组,保证分组尽可能等长,是最简洁的实现方式。

代码示例:

# 生成目标向量
vec <- 1:100
# 按要求拆分成分组
groups <- split(vec, gl(n = 7, k = 14, length = 100))

验证分组长度:

sapply(groups, length)
# 输出结果:15 15 14 14 14 14 14

gl()参数说明:

  • n = 7:指定总组数
  • k = 14:每个组的基础长度(100除以7的整数部分)
  • length = 100:匹配向量总长度,剩余的100 - 7*14 = 2个元素会分配给前2个组,使它们的长度变为15。

2. 手动定义分组索引

如果需要更直观地控制每组长度,可以手动指定各组大小,再生成分组ID进行拆分:

vec <- 1:100
# 定义每组长度:前2组15个元素,后5组14个元素
group_lengths <- c(15, 15, rep(14, 5))
# 生成对应分组ID
group_ids <- rep(1:7, group_lengths)
# 拆分向量
groups <- split(vec, group_ids)

3. tidyverse 工具链(dplyr)

如果习惯使用tidyverse生态,可以用group_split()配合分组因子实现:

library(dplyr)

tibble(value = 1:100) %>%
  mutate(group = gl(7, 14, 100)) %>%
  group_split(group, .keep = FALSE)

执行后会得到包含7个tibble的列表,每个tibble对应一组数据。


内容的提问来源于stack exchange,提问作者Aku-Ville Lehtimäki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:30:10