4

我需要使用 R 生成以下格式的向量:

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

有没有比创建 12 个向量然后每个向量重复两次更简单的方法?

4

6 回答 6

18

你也可以这样做:

rep(1:10, 26) + rep(seq(0,120,10), each=20)
于 2010-06-23T16:28:29.500 回答
3

这是你想要的吗?

unlist(lapply(rep(seq(1, 121, by=10), each=2), function(x) seq(x, x+9)))
于 2010-06-23T15:14:06.933 回答
3

其他方式:

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

可能更有效的版本:

x <- 1:130
dim(x) <- c(10,13)
c(rbind(x, x))
于 2010-06-23T20:51:04.540 回答
2

或者,您可以使用 和 的组合repouter例如:

c(outer(1:10,rep(0:12,each=2),function(x,y)10*y+x))
于 2010-06-23T17:20:22.163 回答
1

我想这对你有用。

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)
于 2010-06-23T15:18:50.553 回答
1

使用方法split

unlist(rep(split(seq_len(130), rep(1:13, each=10)), each=2), use.names=FALSE)
于 2017-07-05T19:18:55.673 回答