Предполагая, m
- это фрейм данных:
m <- data.frame(V1 = LETTERS[1:3], V2 = 2:4, stringsAsFactors = FALSE)
Это будет делать то, что вы хотите:
with(m, rep(V1, times = V2))
например,
> with(m, rep(V1, times = V2))
[1] "A" "A" "B" "B" "B" "C" "C" "C" "C"
Редактировать: Чтобы обратиться к редактированию, выполненному OP, попробуйте следующее:
with(m, data.frame(X1 = rep(V1, times = V2),
X2 = unlist(lapply(V2, seq_len))))
, который производит:
> with(m, data.frame(X1 = rep(V1, times = V2),
+ X2 = unlist(lapply(V2, seq_len))))
X1 X2
1 A 1
2 A 2
3 B 1
4 B 2
5 B 3
6 C 1
7 C 2
8 C 3
9 C 4
или более кратко через sequence()
- согласно @Ответ Андри (о котором я тоже постоянно забываю):
with(m, data.frame(X1 = rep(V1, times = V2), X2 = sequence(V2)))