在seq
R中的功能会给我一个序列来自x
于y
一个恒定的一步m
:
seq(x, y, m)
例如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]) }