我需要创建一个从1到100(无关紧要)的序列,其交替步长不遵循任何特定的分布或规则.准确的步长只能由数字向量定义:

vec <- c(1,1,2,1,3,1,1,1,1,4,1)

我如何从上面的向量中得到下面的序列?

seq <- c(1,2,3,5,6,9,10,11,12,13,17,18)

来自seq函数的参数by =不接受向量作为输入,因此任何有关如何解决此问题的 idea 或建议都将受到高度赞赏.

推荐答案

使用cumsum:

cumsum(c(1, vec))
#[1]  1  2  3  5  6  9 10 11 12 13 17 18

一年前,我问了一个similar question分,一个非常灵活的solution分是:

seq2 <- function(from, to, by) {
  
  vals <- c(0, cumsum(rep(by, abs(ceiling((to - from) / sum(by))))))
  if(from > to) return((from - vals)[(from - vals) >= to])
  else (from + vals)[(from + vals) <= to]
}

seq2(from = 1, to = sum(vec), by = vec)
#[1]  1  2  3  5  6  9 10 11 12 13 17

R相关问答推荐

ggplot 2中的地块底图(basemaps_gglayer()不起作用)

R中具有gggplot 2的Likert图,具有不同的排名水平和显示百分比

从gtsummary包中使用tBL_strata()和tBL_summary()时删除变量标签

抖动点与嵌套类别变量箱形图的位置不对齐

如何计算前一行的值,直到达到标准?

将年度数据插入月度数据

过滤器数据.基于两列的帧行和R中的外部向量

derrr summarise每个组返回多行?

如何使用R对每组变量进行随机化?

用相同方法得到不同函数的ROC最优截断值

R—将各种CSV数字列转换为日期

多个模拟序列间的一种预测回归关系

将. xlsx内容显示为HTML表

调换行/列并将第一行(原始数据帧的第一列)提升为标题的Tidyr类似功能?

循环遍历多个变量,并将每个变量插入函数R

Conditional documentr::R中数据帧的summarize()

在shiny 表格中输入的文本在第一次后未更新

R中从因数到数字的转换

如何捕获这个shiny 的、可扩展的react 性用户输入矩阵作为另一个react 性对象,以便进一步操作?

GgHighlight找不到它创建的列:`Highlight..1`->;`Highlight.....`