Create a repeating sequence

I need to generate a vector of the following format using R:

1:10, 1:10, 11:20, 11:20, ... 121:130, 121:130 

Is there an easier way than creating 12 vectors and then repeating each of them twice?

+4
source share
6 answers

Is this what you want?

 unlist(lapply(rep(seq(1, 121, by=10), each=2), function(x) seq(x, x+9))) 
+2
source

You can also do:

 rep(1:10, 26) + rep(seq(0,120,10), each=20) 
+18
source

Another way:

 x <- matrix(1:130, 10, 13) c(rbind(x, x)) 

Possible more effective version:

 x <- 1:130 dim(x) <- c(10,13) c(rbind(x, x)) 
+3
source

Alternatively, you can use a combination of rep and outer , for example:

 c(outer(1:10,rep(0:12,each=2),function(x,y)10*y+x)) 
+2
source

I think it will make you.

 x <- ((0:12)*10)+1 y <- x + 9 repeatVectors <- function(x,y){ rep(seq(x,y),2) } z <- mapply(repeatVectors, x,y) z <- as.vector(z) 
+1
source

Method using split -

 unlist(rep(split(seq_len(130), rep(1:13, each=10)), each=2), use.names=FALSE) 
+1
source

Source: https://habr.com/ru/post/1313666/


All Articles