生成特定索引序列的更优R语言无依赖实现方案
简洁的Base R无依赖实现方案
针对你的需求,这里提供几种Base R原生的简洁实现方式,无需额外依赖:
情况1:每组为连续的72行(第一组1-72,第二组73-144,依此类推)
使用split()函数一行即可生成分组索引列表:
tally <- list(rows = 72, groups = 5) group_indexes <- split(1:(tally$rows * tally$groups), rep(1:tally$groups, each = tally$rows))
返回结果是包含5个元素的列表,每个元素对应一组的行号索引。
情况2:每组为循环间隔采样的行(第1、6、11…行归为组1,第2、7、12…行归为组2,依此类推)
只需调整rep()的参数即可实现:
group_indexes <- split(1:(tally$rows * tally$groups), rep(1:tally$groups, times = tally$rows))
直接构造每组索引的方式
如果偏好直接生成每组的索引向量,lapply()的写法同样简洁:
group_indexes <- lapply(0:(tally$groups - 1), function(i) (1:tally$rows) + i * tally$rows)
以上几种方式均基于Base R原生函数,无需安装任何包,代码简洁且易于维护。
内容的提问来源于stack exchange,提问作者Tianjian Qin
相关产品推荐
相关产品推荐

