在seqR中的功能会给我一个序列来自x于y一个恒定的一步m:
seq(x, y, m)
Run Code Online (Sandbox Code Playgroud)
例如seq(1,9,2) = c(1,3,5,7,9).
什么是最优雅的方式从中获取的顺序x,以y与交替的步骤m1和m2,这样类似"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).
我通过以下方式得出了解决方案: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)