Вектор повторяющихся значений индекса

#r

#r

Вопрос:

У меня есть вектор следующего вида:-

 a <- c(4, 6, 3, 6, 1)
 

Я хочу сделать вектор таким, чтобы он имел индекс вектора a , во много раз превышающий значение этого индекса в векторе a .

Как первый индекс имеет значение 4 , так и должны быть 4 единицы, за которыми следуют 6 двойки, затем 3 тройки и так далее.

Тогда результирующий вектор должен иметь следующий вид:-

 b <- c(1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5)
 

Заранее спасибо.

Ответ №1:

Мы можем использовать rep как :

 a <- c(4, 6, 3, 6, 1)
rep(seq_along(a), a)
#[1] 1 1 1 1 2 2 2 2 2 2 3 3 3 4 4 4 4 4 4 5
 

Ответ №2:

Мы можем использовать sequence

 cumsum(sequence(a) == 1)
#[1] 1 1 1 1 2 2 2 2 2 2 3 3 3 4 4 4 4 4 4 5
 

Или с помощью uncount

 library(dplyr)
library(tidyr)
tibble(a) %>% 
     mutate(rn = row_number()) %>%
     uncount(a)