R 从向量重复序列

R 从向量重复序列,r,indexing,R,Indexing,假设我有这样一个向量: vector <- 1:9 #$ [1] 1 2 3 4 5 6 7 8 9 我是这样做到的: index <- NULL x <- 3 n <- 2 for (i in 1:(length(vector)/3)) { index <- c(index, rep(c(1:x + (i-1)*x), n)) } #$ [1] 1 2 3 1 2 3 4 5 6 4 5 6 7 8 9 7 8 9 索引您可以尝试首先拆分

假设我有这样一个向量:

vector <- 1:9
#$ [1]  1  2  3  4  5  6  7  8  9
我是这样做到的:

index <- NULL
x <- 3
n <- 2
for (i in 1:(length(vector)/3)) {
  index <- c(index, rep(c(1:x + (i-1)*x), n))
}
#$ [1] 1 2 3 1 2 3 4 5 6 4 5 6 7 8 9 7 8 9

索引您可以尝试首先
拆分
向量,然后使用
rep
取消列出

x <- 3  # this is the length of each subset sequence from i to i+x (see above)
n <- 2  # this is how many times you want to repeat each subset sequence
unlist(lapply(split(vector, rep(1:(length(vector)/x), each = x)), rep, n), use.names = FALSE)
#  [1] 1 2 3 1 2 3 4 5 6 4 5 6 7 8 9 7 8 9

你在找这个吗
rep(seq(vector[1:x]),n)
或者这样:
unname(unlist(rep(split(x,factor(sort(rank(rank(x)%%3))),each=2))
其中
x
是你的向量nope,不要这样认为,这似乎只会将第一个
1:x
元素重复n次,我希望每个
I:I+x
元素都像上面的例子一样。完美,这就是诀窍——我刚刚编辑了var名称
x <- 3  # this is the length of each subset sequence from i to i+x (see above)
n <- 2  # this is how many times you want to repeat each subset sequence
unlist(lapply(split(vector, rep(1:(length(vector)/x), each = x)), rep, n), use.names = FALSE)
#  [1] 1 2 3 1 2 3 4 5 6 4 5 6 7 8 9 7 8 9
c(do.call(rbind, replicate(n, matrix(vector, ncol = x), FALSE)))
#  [1] 1 2 3 1 2 3 4 5 6 4 5 6 7 8 9 7 8 9