2016-02-21 3 views
4

У меня есть матрица из 2 строк и 2 столбца и вы хотите увеличить эту матрицу так, чтобы она имела 4 строки и 4 столбца с одинаковыми значениями в ней. Как будто можно «увеличить» матрицу.Увеличить матрицу пропорционально в R

Это мой 2 * 2 матрица:

a<-matrix(1:4,nrow=2,byrow=TRUE) 

    [,1] [,2] 
[1,] 1 2 
[2,] 3 4 

И я хочу, чтобы преобразовать эту матрицу так, это выглядит следующим образом:

 [,1] [,2] [,3] [,4] 
[1,] 1 1 2 2 
[2,] 1 1 2 2 
[3,] 3 3 4 4 
[4,] 3 3 4 4 

Я упростил задачу: значения в матрице просто служат примером. Истинная матрица, которую я хочу преобразовать, состоит из 10 строк и столбцов и должна быть преобразована в 30 строк и 30 столбцов, но принцип должен быть таким же.
Я собираюсь решить эту проблему с помощью цикла, но я уверен, что должен быть более элегантный способ.

ответ

10

См Kronecker product

enlarge <- function(m, k) kronecker(m, matrix(1, k, k)) 
enlarge(a, 2) 
#  [,1] [,2] [,3] [,4] 
# [1,] 1 1 2 2 
# [2,] 1 1 2 2 
# [3,] 3 3 4 4 
# [4,] 3 3 4 4 
enlarge(a, 3) 
#  [,1] [,2] [,3] [,4] [,5] [,6] 
# [1,] 1 1 1 2 2 2 
# [2,] 1 1 1 2 2 2 
# [3,] 1 1 1 2 2 2 
# [4,] 3 3 3 4 4 4 
# [5,] 3 3 3 4 4 4 
# [6,] 3 3 3 4 4 4 
+0

Очень элегантно! Спасибо! – curbholes

Смежные вопросы