Разбить вектор на подстержни одинаковой длины и назначить каждому из них новый вектор - PullRequest
0 голосов
/ 29 июня 2018

Предположим, у меня есть такой вектор:

s <- c(1:30) ## here the numbers are just an example. I just need to split it into the same length subvectors. 

Тогда предположим, что у меня есть еще три вектора:

s1 <- s2 <- s3 <- vector()

Я хотел бы разбить первый вектор s на три подвектора, каждый из которых содержит 10 элементов. Затем я хотел бы сохранить каждый 10 элементов в векторах s1:s3. Например,

Я хотел бы иметь это:

  > s1
 [1]  1  2  3  4  5  6  7  8  9 10

> s2
 [1] 11 12 13 14 15 16 17 18 19 20

> s3
 [1] 21 22 23 24 25 26 27 28 29 30

Я хотел бы сделать это с lapply, потому что иногда мне нужно разделить вектор на 10, 3, или любое произвольное число субвекторов зависит от моих данных.

1 Ответ

0 голосов
/ 29 июня 2018

Мы можем split vector 's с индексом группировки, созданным с помощью gl. Вывод будет list, и лучше хранить его в list вместо нескольких объектов в глобальной среде

lst <- split(s, as.integer(gl(length(s), 10, length(s))))

gl создает вектор группировки

as.integer(gl(length(s), 10, length(s)))
#[1] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3

и при разделении 's' на выход gl первые 10 значений 's' группируются вместе, затем вторые 10 и так далее. Они хранятся как list из vector s

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...