Простой способ объединить несколько матриц в R - PullRequest
0 голосов
/ 27 февраля 2020

Есть ли простой способ построить матрицу в R на основе нескольких других блочных матриц?

Предположим, у меня есть матрица A1, A2, A3 и A4. Я хочу построить Матрицу A, которая эквивалентна в Matlab из [A1, A2; A3; A4]. Я знаю, что могу использовать rbind (cbind (A1, A2), cbind (A3, A4)), есть ли более эффективный и прямой способ?

1 Ответ

3 голосов
/ 27 февраля 2020

R на самом деле не имеет много ярлыков для создания таких матриц, как matlab. Самое явное это просто придерживаться rbind и cbind, как вы уже сделали. Если это то, что вы делаете много, вы можете написать вспомогательную функцию, такую ​​как

mat_shape <- function(expr) {
  env<-new.env(parent=parent.frame())
  env[[":"]] <- base::cbind
  env[["/"]] <- base::rbind
  eval(substitute(expr), envir = env)
}

, здесь мы повторно уточняем : как cbind и / как rbind для этой конкретной функции. , Тогда вы могли бы сделать

A <- matrix(1:6, ncol=3)
B <- matrix(1:4, ncol=2)
C <- matrix(1:3, ncol=1)
D <- matrix(1:12, ncol=4)

mat_shape(A:B/C:D)
#      [,1] [,2] [,3] [,4] [,5]
# [1,]    1    3    5    1    3
# [2,]    2    4    6    2    4
# [3,]    1    1    4    7   10
# [4,]    2    2    5    8   11
# [5,]    3    3    6    9   12
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...