重复重复序列

时间:2012-06-24 18:32:01

标签: r sequence replicate

我们希望得到一个如下所示的数组:

1,1,1,2,2,2,3,3,3,4,4,4,1,1,1,2,2,2,3,3,3,4,4,4,1,1,1,2,2,2,3,3,3,4,4,4

最简单的方法是什么?

5 个答案:

答案 0 :(得分:41)

您可以通过一次rep电话进行此操作。 eachtimes参数按顺序进行评估,首先完成each

rep(1:4, times=3, each=3)
#[1] 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4

答案 1 :(得分:18)

或者,更简单(假设你的意思是一个向量,而不是一个数组)

rep(rep(1:4,each=3),3)

答案 2 :(得分:6)

42-的答案将在您的数字序列递增1的情况下起作用。但是,如果要包括以一定间隔(例如,从0到60乘以15)增加的数字序列,则可以执行此操作:

rep(seq(0,60,15), times = 3)
[1]  0 15 30 45 60  0 15 30 45 60  0 15 30 45 60  

您只需更改要重复的次数。

答案 3 :(得分:2)

像这样:

rep(sapply(1:4, function(x) {rep(x, 3)}), 3)

rep(x,N)返回重复x次的向量。 sapply分别将给定函数应用于向量1:4的每个元素,连续3次重复每个元素。

答案 4 :(得分:0)

这是一个使用aperm进行数组操作的方法。我们的想法是构造一个包含值的数组。重新排列它们,使它们与aperm匹配所需的输出,然后"展开"数组c

c(aperm(array(1:4, dim=c(4,3,3)), c(2, 1, 3)))
 [1] 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4