2016-04-17 2 views
3

Каждый цикл моей функции sapply выйдет из матрицы n * m. n фиксировано, m - нет. Например, если я запускаю это в R:Как совместить матрицы с sapply в 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 

Любая идея это? Благодаря

ответ

5

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

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 
1

Мы можем использовать 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 
Смежные вопросы