两个数字的序列减少了其中一个的出现

Seb*_*Seb 8 r sequence seq rep

我想从两个数字创建一个序列,这样一个数字的出现减少(从n_11到1),而另一个数字的出现被固定为n_2.

我一直在寻找并尝试使用seq和rep来做它,但我似乎无法弄明白.

下面是一个例子c(0,1)并且n_1=5,n_2=3:

0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,1,1,1,0,1,1,1
Run Code Online (Sandbox Code Playgroud)

而这里c(0,1)n_1=2,n_2=1:

0,0,1,0,1
Run Code Online (Sandbox Code Playgroud)

A5C*_*2T1 10

也许是这样的?

rep(rep(c(0, 1), n_1), times = rbind(n_1:1, n_2))
##  [1] 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 1 1 1 0 1 1 1
Run Code Online (Sandbox Code Playgroud)

这是一个功能(没有任何健全性检查):

myfun <- function(vec, n1, n2) rep(rep(vec, n1), times = rbind(n1:1, n2))

myfun(c(0, 1), 2, 1)
## [1] 0 0 1 0 1
Run Code Online (Sandbox Code Playgroud)

inverse.rle

另一种选择是使用inverse.rle:

y <- list(lengths = rbind(n_1:1, n_2),
          values = rep(c(0, 1), n_1))
inverse.rle(y)
##  [1] 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 1 1 1 0 1 1 1
Run Code Online (Sandbox Code Playgroud)