首页 > 解决方案 > 在 R 中连接多个矩阵的简单方法

问题描述

有没有一种简单的方法可以基于其他几个块矩阵在 R 中构建矩阵?

假设我有 A1、A2、A3 和 A4 矩阵。我想构造一个矩阵 A,它在 matlab 中等效于 [A1,A2;A3;A4]。我知道我可以使用 rbind(cbind(A1,A2),cbind(A3,A4)),有没有更有效和直接的方法?

标签: rmatrixrbindcbind

解决方案


R 并没有很多用于创建像 matlab 这样的矩阵的快捷符号。最明确的就是坚持使用rbindand ,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

推荐阅读