Используя индексы, вы можете легко сделать это без команды split, используя тот факт, что R заполняет матрицы по столбцам.
Пример игрушки:
> eBpvalues <- matrix(1:100,ncol=2) # a matrix with 2 cols and 50 values
> id <- c(1,11)+rep(0:9,each=2)
> id
[1] 1 11 2 12 3 13 4 14 5 15 6 16 7 17 8 18 9 19 10 20
> tt <- matrix(eBpvalues,ncol=20)[,id]
> tt # a matrix with the 2 cols split up and binded rowwise
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20]
[1,] 1 51 6 56 11 61 16 66 21 71 26 76 31 81 36 86 41 91 46 96
[2,] 2 52 7 57 12 62 17 67 22 72 27 77 32 82 37 87 42 92 47 97
[3,] 3 53 8 58 13 63 18 68 23 73 28 78 33 83 38 88 43 93 48 98
[4,] 4 54 9 59 14 64 19 69 24 74 29 79 34 84 39 89 44 94 49 99
[5,] 5 55 10 60 15 65 20 70 25 75 30 80 35 85 40 90 45 95 50 100
Это снова дает вам матрицу. Если вы используете сплит, вы можете использовать решение Гэвина. Это преобразует все в кадры данных, которые могут иметь нежелательные побочные эффекты. Для начала немного медленнее на больших матрицах.