【发布时间】:2010-06-23 14:57:55
【问题描述】:
我需要使用 R 生成如下格式的向量:
1:10, 1:10, 11:20, 11:20, ... 121:130, 121:130
有没有比创建 12 个向量然后每个向量重复两次更简单的方法?
【问题讨论】:
我需要使用 R 生成如下格式的向量:
1:10, 1:10, 11:20, 11:20, ... 121:130, 121:130
有没有比创建 12 个向量然后每个向量重复两次更简单的方法?
【问题讨论】:
你也可以这样做:
rep(1:10, 26) + rep(seq(0,120,10), each=20)
【讨论】:
1:10 + rep(10*(0:12), 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)
【讨论】:
使用split的方法是
unlist(rep(split(seq_len(130), rep(1:13, each=10)), each=2), use.names=FALSE)
【讨论】: