R を使用して、次の形式のベクトルを生成する必要があります。
1:10, 1:10, 11:20, 11:20, ... 121:130, 121:130
12 個のベクトルを作成し、それぞれを 2 回繰り返すよりも簡単な方法はありますか?
また、次のこともできます。
rep(1:10, 26) + rep(seq(0,120,10), each=20)
これは、あなたの望むことですか?
unlist(lapply(rep(seq(1, 121, by=10), each=2), function(x) seq(x, x+9)))
別の方法:
x <- matrix(1:130, 10, 13)
c(rbind(x, x))
可能なより効率的なバージョン:
x <- 1:130
dim(x) <- c(10,13)
c(rbind(x, x))
rep
または、次のようにと を組み合わせて使用することもできますouter
。
c(outer(1:10,rep(0:12,each=2),function(x,y)10*y+x))
これでうまくいくと思います。
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)