我需要,使用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个载体和重复然后每一个的两倍更简单的方法?
这是你想要的吗?
unlist(lapply(rep(seq(1, 121, by=10), each=2), function(x) seq(x, x+9)))
我认为这会对你有用。
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)
你也可以这样做:
rep(1:10, 26) + rep(seq(0,120,10), each=20)
或者,你可以使用的rep
和outer
,如组合:
c(outer(1:10,rep(0:12,each=2),function(x,y)10*y+x))
另一种方式:
x <- matrix(1:130, 10, 13)
c(rbind(x, x))
可能更有效的版本:
x <- 1:130
dim(x) <- c(10,13)
c(rbind(x, x))
使用split
的方法是
unlist(rep(split(seq_len(130), rep(1:13, each=10)), each=2), use.names=FALSE)
优雅!考虑到获得结果的方法数量多,我对于被淘汰的感觉好一些。 – dnagirl 2010-06-23 16:37:33
甚至rep(1:10,2)+ rep(seq(0,120,10),每个= 20)将会起作用 – 2010-06-24 12:36:41
大鼠,来到这么晚,并且认为我有最快的速度,但是这非常接近最佳解决方案。我只是投票。为了让它更快使用+号后面的“rep(0:12,each = 20)* 10”。 (总体上6倍加速) – John 2010-06-24 19:41:20