Как объединить матрицы с sapply в R

Каждый цикл моей функции sapply выводит матрицу n * m. n фиксировано, m нет. Например, если я запускаю это в R:

sapply(1:3, function(x) {matrix(1:9, 3)})

и он выведет:

      [,1] [,2] [,3]
 [1,]    1    1    1
 [2,]    2    2    2
 [3,]    3    3    3
 [4,]    4    4    4
 [5,]    5    5    5
 [6,]    6    6    6
 [7,]    7    7    7
 [8,]    8    8    8
 [9,]    9    9    9

Однако я хочу что-то вроде этого:

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,]    1    4    7    1    4    7    1    4    7
[2,]    2    5    8    2    5    8    2    5    8
[3,]    3    6    9    3    6    9    3    6    9

Любая идея для этого? Спасибо


person Eric He    schedule 17.04.2016    source источник


Ответы (2)


Одно решение:

do.call(cbind, lapply(1:3, function(x) {matrix(1:9, 3)}))
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,]    1    4    7    1    4    7    1    4    7
[2,]    2    5    8    2    5    8    2    5    8
[3,]    3    6    9    3    6    9    3    6    9
person Gopala    schedule 17.04.2016

Мы можем использовать replicate

`dim<-`(replicate(3, matrix(1:9, 3)), c(3, 3*3))
 #    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
 #[1,]    1    4    7    1    4    7    1    4    7
 #[2,]    2    5    8    2    5    8    2    5    8
 #[3,]    3    6    9    3    6    9    3    6    9
person akrun    schedule 17.04.2016