Повторите строки на основе вектора

Я пытаюсь повторить строки в R несколько раз (как часто определяется столбец). Мой исходный код работает только иногда по какой-то причине.

start <- c(1901, 1902, 1950, 1980, 1980)
end <- c(1905, 1910, 1951, 1999, 1985)
df <- data.frame(start, end)
df$count <- df$end - df$start

Я пытаюсь повторить строки столько раз, сколько разница между началом и концом. Каждый год получает по одной строке (+1 необходим, поэтому и в начале, и в конце года также есть строка).

Фрагмент кода, который работает только иногда, выглядит следующим образом:

df<- df[rep(rownames(df), df$count +1), ]

Иногда говорится, что аргумент "times" неверен.

1 ответ

Решение

Я думаю ты хочешь

df[rep(seq_along(df$count), df$count), ]

Это повторяет последовательность 1:length(df$count) с каждым из df$count раз.

Другие вопросы по тегам