Один из вариантов - создать логический индекс с rep
, а затем использовать его для split
последовательности строк matrix
, подмножества matrix
на основе вектора индекса в list
out <-lapply(split(seq_len(nrow(m1)), rep(rep(c(TRUE, FALSE), c(8, 2)),
length.out = nrow(m1))), function(i) m1[i, ] )
Кроме того, как @ user20650 упоминается в комментариях, ?split.data.frame
можно использовать и с матрицами (на основе документации)
Метод фрейма данных также можно использовать для разбиения матрицы на список матриц и форму замены, при условии, что они вызываются явно.
out1 <- split.data.frame(m1, rep(rep(c(TRUE, FALSE), c(8, 2)),
length.out = nrow(m1)))
данные
set.seed(24)
m1 <- matrix(rnorm(100 * 1024), nrow = 100, ncol = 1024)