2013-09-24 4 views
1

У меня есть целочисленный вектор: a <- c(1,1,3,1,4) где каждый элемент в a указывает, сколько раз его индекс должен быть реплицирован в новый вектор.Репликация векторных элементов по индексу

Так результирующий вектор должен быть: b <- c(1,2,3,3,3,4,5,5,5,5)

Что бы наиболее эффективный способ сделать это?

ответ

3

Например, используя rep:

rep(seq_along(a),a) 
1 2 3 3 3 4 5 5 5 5 

Другим менее эффективным вариантом является использование inverse.rle:

inverse.rle(list(lengths=a,values=seq_along(a))) 
[1] 1 2 3 3 3 4 5 5 5 5 
Смежные вопросы