#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)