有没有一种方法可以创建这种类型的向量而不使用for循环?

时间:2020-03-30 07:11:21

标签: r

我有一个向量,里面有一堆数字,可以说3,2,0,0,0,1,2,....

我想创建一个向量,该向量具有基于上述向量中的数字的数字。 很难解释,但是根据上述数字创建的向量将是1,1,1,2,2,6,7,7

一个出现3次是因为第一个数字是3,两个出现了两次是因为第二个数字是2,依此类推。

我可以使用rep()在for循环中做到这一点,但是我很乐意使用sapply和自定义函数(如果有的话,已经存在的函数)来做到这一点。我不确定在没有计数器变量i的情况下怎么做。

1 个答案:

答案 0 :(得分:4)

您可以在此处以矢量化方式使用rep,用seq_along循环遍历每个元素的位置,并重复x次。

x <- c(3,2,0,0,0,1,2)

rep(seq_along(x), x)
#[1] 1 1 1 2 2 6 7 7