使用交替步骤在R中获取seq()

Gio*_*oni 9 r seq

seqR中的功能会给我一个序列来自xy一个恒定的一步m:

seq(x, y, m)
Run Code Online (Sandbox Code Playgroud)

例如seq(1,9,2) = c(1,3,5,7,9).

什么是最优雅的方式从中获取的顺序x,以y交替的步骤m1m2,这样类似"seq(x, y, c(m1, m2))"会给我c(x, x + m1, (x + m1) + m2, (x + m1 + m2) + m1, ..., y),每次加的步骤之一(不一定达到最高y,当然,如seq)?

例子:x = 1; y = 19; m1 = 2; m2 = 4我明白了c(1,3,7,9,13,15,19).

ray*_*how 6

我通过以下方式得出了解决方案:1.使用cumsum向量c(from,rep(by,times),...),by重复times = ceiling((to-from)/sum(by))次数.2.按顺序截断序列!(seq > to).

 seq_alt <- function(from, to, by) {
   seq <- cumsum(c(from,rep(by,ceiling((to-from)/sum(by)))))
   return(seq[! seq > to])
 }
Run Code Online (Sandbox Code Playgroud)