在 R 中连接多个矩阵的简单方法

Easy way to concatenate several matrices in R

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

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

R 并没有很多像 matlab 这样的创建矩阵的快捷符号。最明确的是坚持使用 rbindcbind,就像您已经完成的那样。如果这是你发现自己经常做的事情,你可以写一个像这样的辅助函数

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