我想创建一个类似的故事。
1 1 6 6 10 10 ...
2 2 7 7 11 11 ...
3 3 8 8 12 12 ...
4 4 9 9 13 13 ...
5 5 14 14 ...
15 15 ...
我想使用变量:
n(重复)和m(总列数)和k(k=前一列的尾数+1,例如:6=5+1,10=9+1),以及不同的行数长度来创建一个表格。
我知道我可以用like.Like.Like.Like.Like.Like.Like.Like.Like.Like.Like.Like.Like.Like.Like.Like.Like.Like.Like.Like.Like.Like:
rep(list(1:5,6:9,10:15), each = 2)),
但如何使用一个通用表达式将它们作为参数来列出list(1:5,6:9,10:15,...使用n,m,k表达式...)。
我试着使用循环for(i in 1:m)等......但最终无法工作,我想通过使用unlist()来建立一个序列:1,2,3,4,5,6,1,2,3,4,5,6......)非常感谢。
也许下面的代码可以帮助
len <- c(5,4,6)
res <- unlist(unname(rep(split(1:sum(len),
findInterval(1:sum(len),cumsum(len)+1)),
each = 2)))
由此可见
> res
[1] 1 2 3 4 5 1 2 3 4 5 6 7 8 9 6 7 8 9 10 11 12 13 14 15 10 11 12 13 14 15
也许,这样的东西会有帮助。
#Number of times to repeat
r <- 2
#Length of each sequence
len <- c(5, 4, 6)
#Get the end of the sequence
end <- cumsum(Glen)
#Calculate the start of each sequence
start <- c(1, end[-length(end)] + 1)
#Create a sequence of start and end and repeat it r times
Map(function(x, y) rep(seq(x, y), r), start, end)
#[[1]]
# [1] 1 2 3 4 5 1 2 3 4 5
#[[2]]
#[1] 6 7 8 9 6 7 8 9
#[[3]]
# [1] 10 11 12 13 14 15 10 11 12 13 14 15
你可以 unlist
以获得一个矢量。
unlist(Map(function(x, y) rep(seq(x, y), r), start, end))