在 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 这样的创建矩阵的快捷符号。最明确的是坚持使用 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
有没有一种简单的方法可以基于其他几个分块矩阵在 R 中构建矩阵?
假设我有A1、A2、A3和A4矩阵。我想构造一个在 matlab 中等效于 [A1,A2;A3;A4] 的矩阵 A。我知道我可以使用 rbind(cbind(A1,A2),cbind(A3,A4)),有没有更有效和直接的方法?
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