首页 > 解决方案 > 生成序列 111122222333334

问题描述

我想使用 rep() 或 seq() 函数(或任何其他函数)生成序列 111122222333334,而不使用 c()。我尝试了以下方法:

rep(1:4,rep(4:5,length=4))

但它并没有返回我想要的结果。任何帮助,将不胜感激。

标签: r

解决方案


一个选项reptimes

times - 一个整数值向量,如果长度为 length(x),则给出重复每个元素的(非负)次数,如果长度为 1,则重复整个向量。负值或 NA 值是错误的。接受双精度向量,其他输入被强制转换为整数或双精度向量。

rep(1:4, c(4, 5, 5, 1))

或使用seq

rep(1:4, rbind(seq(4, length.out=2, by = 1), seq(5, length.out = 2, by = -4)))

或者把它保存在一个listunlist

rep(1:4, unlist(list(seq(4, length.out=2, by = 1),
                     seq(5, length.out = 2, by = -4))))

或与Map

rep(1:4, unlist(Map(seq, 4:5, length.out = 2, by = list(1, -4))))

推荐阅读