Как разделить вектор на субвекторы с указанным субвектором lengtha в R - PullRequest
0 голосов
/ 14 октября 2019

Я хочу, чтобы R разбил вектор на подвекторы с указанием длины каждого подвектора.

Если у меня есть вектор ts, который находится в диапазоне от 1 до 30, я бы хотел разделить его на подвекторы сдлина субвекторов будет 4 4 4 4 2 2 2 2 4 2

ts<-1:30
t<-c(4 4 4 4 2 2 2 2 4 2)
split(ts, each=t) # divides the series into blocks

** Результат, который я хочу **

# 1 2 3 4
#5 6 7 8
#9 10 11 12
#13 14 15 16
#17 18
#19 20
#20 22
#23 24
#25 26 27 28
#29 30

1 Ответ

1 голос
/ 14 октября 2019

Мы создадим индекс группировки с rep, используя вектор 't' и split вектор 'ts'

split(ts, rep(seq_along(t), t))
#$`1`
#[1] 1 2 3 4

#$`2`
#[1] 5 6 7 8

#$`3`
#[1]  9 10 11 12

#$`4`
#[1] 13 14 15 16

#$`5`
#[1] 17 18

#$`6`
#[1] 19 20

#$`7`
#[1] 21 22

#$`8`
#[1] 23 24

#$`9`
#[1] 25 26 27 28

#$`10`
#[1] 29 30

data

ts <- 1:30
t <- c(4, 4, 4, 4, 2, 2, 2, 2, 4, 2)

ПРИМЕЧАНИЕ: Оба ts и t являются именами функций. лучше указывать имена объектов с другим именем

...