r - 在 R 中连接多个矩阵的简单方法
问题描述
有没有一种简单的方法可以基于其他几个块矩阵在 R 中构建矩阵?
假设我有 A1、A2、A3 和 A4 矩阵。我想构造一个矩阵 A,它在 matlab 中等效于 [A1,A2;A3;A4]。我知道我可以使用 rbind(cbind(A1,A2),cbind(A3,A4)),有没有更有效和直接的方法?
解决方案
R 并没有很多用于创建像 matlab 这样的矩阵的快捷符号。最明确的就是坚持使用rbind
and ,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
推荐阅读
- html - 为什么flex给hr元素宽度为0?
- c# - 使用 C# 参数化创建 MYSQL 数据库
- ruby-on-rails - scrypt 无法通过 authologic 安装
- django - Django - 在自定义 AdminSite 中注册应用模型
- javascript - 当文本区域为空时,如何动态启用/禁用提交按钮?
- ruby-on-rails - Accepts_nested_attributes_fields 没有为连接表显示
- azure - Visual Studio Code - AZURE COSMOS DB 扩展 - 提供的凭据无效(错误 401)
- c# - 访问每个页面上的模型
- android - 填充布局直到下一个布局(底部)
- java - PasswordField 的 Java Swing 占位符