首页 > 解决方案 > 如何基于 R 中的变量控制创建具有灵活列的表?

问题描述

我想创造一个像这样的故事:

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),不同的行数长度创建一张桌子。

我知道我可以像这样使用:

rep(list(1:5,6:9,10:15), each = 2)),

但是如何使用通用表达式将它们作为参数列出列表(1:5,6:9,10:15,..使用n,m,k表达式...)。

我尝试使用循环 for (i in 1:m) etc.. 但最终无法解决我想要一个使用 unlist() 的序列:1,2,3,4,5,6,1,2,3, 4,5,6......)非常感谢。

标签: r

解决方案


也许下面的代码可以帮助

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

推荐阅读