Разделить вектор на кратность числа - PullRequest
0 голосов
/ 14 ноября 2018

Я хочу разделить вектор на кратность числа, чтобы дать вектор c (1: 100) Я хотел бы получить векторы как:

c(1,11,21,31,41,51,61,71,81,91) 
c(2,12,22,32,42,52,62,72,82,92) 
..... 
c(10,20,30,40,50,60,70,80,90,100)

Обратите внимание, что яхочу, чтобы вектор c (1,11,21,31,41,51,61,71,81,91) был ПЕРВЫМ в списке новых векторов, потому что я знаю, что расщепление (1: 100,1: 100%)% 10) [1] - это c (10,20,30,40,50,60,70,80,90,100), что не то, что я хочу

РЕДАКТИРОВАТЬ 1: 100пример это просто пример.В моем приложении я хочу разделить вектор на 256 чисел (случайные числа не от 1 до 256) и разделить его на 16 новых векторов ...

Ответы [ 3 ]

0 голосов
/ 15 ноября 2018

Это страшнее, чем ответ Джорана, но вы также можете сделать это в цикле и использовать grep(), чтобы извлечь те числа, заканчивающиеся определенным значением:

yourlist <- vector("list", 10)

for (i in 1:10) {
  yourlist[[i]] <- grep(paste0(i %% 10, "$"), 1:100)
}
0 голосов
/ 15 ноября 2018

Как и в комментарии, идеальным выбором было бы сделать это так:

split(1:100,0:99 %% 10) 

В таком случае мы можем сделать его действительно общим, например:

split(vec, 0:(length(vec)-1) %% X)

где vec - вектор, который мы хотим разделить, а X - ваша кратность

0 голосов
/ 15 ноября 2018

Звучит так, как вы хотите split(1:100,1:100 %% 10).Некоторые варианты заказа включают в себя:

x <- split(1:100,1:100 %% 10)
c(tail(x,-1),head(x,1))

или из комментариев выше,

split(1:100,((1:100 %% 10) -1) %% 10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...