Повышение разрешения / масштабирование матрицы путем дублирования строк и столбцов в R - PullRequest
1 голос
/ 06 августа 2020

У меня есть матрица:

> m = matrix(1:9, nrow = 3)
> m
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

Я хотел бы масштабировать матрицу, просто дублируя каждую строку и столбец на n. Например, если n равно 2, то мне нужен результат:

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

Ответы [ 2 ]

2 голосов
/ 06 августа 2020

Я бы предпочел решение D Greenwood, но вы могли бы сделать:

n = 2
apply(apply(m, 1, rep, each = n), 1, rep, each = n)
2 голосов
/ 06 августа 2020
m[rep(1:3, each = 2), rep(1:3, each = 3)]

Или как общая функция:

upscale_matrix = function(m, factor) m[rep(1:nrow(m), each = factor), rep(1:ncol(m), each = factor)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...