对角块矩阵行之间的组合列表

2024-03-02

我有以下 R 矩阵,它是 2x3 和 3x3 子矩阵的组合,它可以是 2 个以上具有不同维度的子矩阵(例如 m1xp 和 m2xp 和 m3xp,其中 m1、m2、m3

A2 <- list(rbind(c(1,1,1),c(-1,1,-1)),
           rbind(c(-1,1,1),c(1,-1,2),c(2,-1,2)))
library(Matrix)
A2 <- as.matrix(Matrix::bdiag(A2))
Rhs <- matrix(c(0,5,0.5,4),nrow = 4)
beta <- c(rep(1.2,3),c(0.5,0.2,0.1))
> A2
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    1    1    0    0    0
[2,]   -1    1   -1    0    0    0
[3,]    0    0    0   -1    1    1
[4,]    0    0    0    1   -1    2
[5,]    0    0    0    2   -1    2

我想获得第一个子矩阵和第二个子矩阵之间的所有行索引组合来解决线性优化问题。该组合必须来自两个子矩阵,然后求解新的 beta,然后检查条件是否成立Aq %*% beta == Rhs满足了,就停下来。如果没有,则采取另一种组合。我认为下面是子矩阵之间的所有行组合:

来自第一子矩阵和第二子矩阵的组合

Aq <- A2[c(1,3),]
Aq <- A2[c(1,4),]
Aq <- A2[c(1,5),]
Aq <- A2[c(2,3),]
Aq <- A2[c(2,4),]
Aq <- A2[c(2,5),]

然后,组合为第一个矩阵中的一个和第二个矩阵中的 2 个

Aq <- A2[c(1,3,4),]
Aq <- A2[c(1,3,5),]
Aq <- A2[c(1,4,5),]
Aq <- A2[c(2,3,4),]
Aq <- A2[c(2,3,5),]
Aq <- A2[c(2,4,5),]

然后,组合为第一个矩阵中的一个和第二个矩阵中的 3 个

Aq <- A2[c(1,3,4,5),]
Aq <- A2[c(2,3,4,5),]

然后,组合为第一个矩阵中的 2 和第二个矩阵中的 1

Aq <- A2[c(1,2,3),]
Aq <- A2[c(1,2,4),]
Aq <- A2[c(1,2,5),]

然后,组合为第一个矩阵中的 2 和第二个矩阵中的 2

Aq <- A2[c(1,2,3,4),]
Aq <- A2[c(1,2,3,5),]
Aq <- A2[c(1,2,4,5),]

然后,组合为第一个矩阵中的 2 和第二个矩阵中的 3

Aq <- A2[c(1,2,3,4,5),]

有没有更好的方法来获得所有组合? 然后我想创建一个循环,一次在上述组合上选择一个,并检查是否

if (Aq %*% beta == Rhs) {
  break
} else {
  TAKE ANOTHER COMBINATION Aq
}

请注意,我可以有两个以上的子矩阵来创建块矩阵。然后我必须创建第一个、第二个和第三个矩阵之间的所有行组合。我希望在 R 中可以有简单的方法。我尝试过 grid.expand 函数,但它没有给我所需的输出。


一种可能的基本 R 方法:

indices1 <- 1:2
indices2 <- 3:5
apply(expand.grid(seq_along(indices1), seq_along(indices2)), 1, 
    function(x) t(apply(
                      expand.grid(combn(indices1, x[1], simplify=FALSE), 
                            combn(indices2, x[2], simplify=FALSE)), 
                  1, unlist)))

output:

[[1]]
     Var1 Var2
[1,]    1    3
[2,]    2    3
[3,]    1    4
[4,]    2    4
[5,]    1    5
[6,]    2    5

[[2]]
     Var11 Var12 Var2
[1,]     1     2    3
[2,]     1     2    4
[3,]     1     2    5

[[3]]
     Var1 Var21 Var22
[1,]    1     3     4
[2,]    2     3     4
[3,]    1     3     5
[4,]    2     3     5
[5,]    1     4     5
[6,]    2     4     5

[[4]]
     Var11 Var12 Var21 Var22
[1,]     1     2     3     4
[2,]     1     2     3     5
[3,]     1     2     4     5

[[5]]
     Var1 Var21 Var22 Var23
[1,]    1     3     4     5
[2,]    2     3     4     5

[[6]]
     Var11 Var12 Var21 Var22 Var23
[1,]     1     2     3     4     5

编辑:添加更通用的版本:

#identifying the indices
indices <- split(seq_len(nrow(A2)), max.col(abs(A2) > 0, "first"))

#generating the combinations
apply(expand.grid(lapply(indices, seq_along)), 1L, 
    function(idx) {
        t(apply(
            expand.grid(
                lapply(seq_along(idx), 
                    function(k) {
                        combn(indices[[k]], idx[k], simplify=FALSE)
                    })),
            1L, unlist))
    })
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对角块矩阵行之间的组合列表 的相关文章

  • 如何在 R 树形图中省略标签?

    我一直在使用R 树形图包 http cran r project org web packages treemap treemap pdf我有一个 2 层深的树形图 我希望打印第二级标签 但不打印第一级标签 使用手册页中的示例 tmPlot
  • 带有 geom_errorbar 的position_dodge

    我有以下代码 require ggplot2 pd lt position dodge 0 3 ggplot dt aes x Time y OR colour Group geom errorbar aes ymin CI lower y
  • 如何在R中使用OpenNLP获取POS标签?

    这是 R 代码 library NLP library openNLP tagPOS lt function x s lt as String x word token annotator lt Maxent Word Token Anno
  • 向图像添加坐标,以用作 R 中的 Leaflet、Shiny 和 Shinydashboard 包中的地图

    我计划使用 Leaflet Shiny 和 Shinydashboard 沿着以下很棒的路线创建一个带有医院 OHS 事件标记的交互式地图交互式地图和直方图模板 http shiny rstudio com gallery superzip
  • 根据另一个向量替换向量中的值

    我想替换向量中的值 x 与另一个向量 y 陷阱 22 方法需要是动态的 以适应向量中不同数量的 级别 x 例如 考虑向量x x lt sample c 1 2 3 4 5 100 replace TRUE gt x 1 2 4 1 1 3
  • 计算 R 中数据帧的每一行中特定值的连续出现次数

    我有一个data frame许多位置 这么多行 的变量的每月值 我想计算值为零的连续月份 即连续单元格 的数量 如果只是从左到右阅读 这很容易 但增加的复杂性是年底与年初是连续的 例如 在下面的缩短示例数据集中 用季节而不是月份 位置 1
  • R:使用带有 .Call 和 C/C++ 包装器的 Fortran 子例程而不是 .Fortran 的优点?

    我有一个 R 包 它使用大量 Fortran 子例程来进行递归线性代数计算的嵌套循环 很大程度上依赖于 BLAS 和 LAPACK 例程 作为 Fortran 的接口 我使用 Fortran功能 我刚刚读过乔纳森卡拉汉的博客文章 http
  • 再现频率矩阵图

    我想在 R 中重新创建一个情节 情节如下 来源 Boring E G 1941 作为动态平衡的统计频率 心理学评论 48 4 279 这略高于我的工资等级 能力 因此在这里询问 无聊的状态 第一次 A 只能出现 从不 0 或 总是 1 在
  • 在嵌套 tibbles 上应用 ntile

    我正在尝试申请ntile在一些嵌套的小标题上 但我似乎无法让它工作 你能看出我错在哪里吗 data iris iris gt group by Species gt mutate quintile ntile Petal Length 5
  • 删除 R 中具有重复属性的行

    我有一个大数据框 其中包含以下列 ID time OS IP 该数据帧的每一行对应一个条目 在该数据框中对于某些IDs存在多个条目 行 我想删除这些多行 显然 同一 ID 的其他属性会有所不同 或者换句话说 我只想要每个 ID 一个条目 行
  • 循环中的knitr模板和子文档

    圣诞节前我之前问过跨多个 knitr 文档的单一样式表 https stackoverflow com questions 20370584 single style sheet across multiple knitr document
  • read.table 和 read.delim 函数之间的区别

    两者有什么区别read table and read delim R语言中的函数 当您不确定函数的作用时 除了阅读帮助页面之外 您还可以检查函数的实际代码 例如 输入read delim显示该函数包含以下代码 gt read delim f
  • 数学 - 映射数字

    如何将 a 和 b 之间的数字线性映射到 c 和 d 之间 也就是说 我希望 2 到 6 之间的数字映射到 10 到 20 之间的数字 但我需要广义的情况 我的脑子炸了 如果您的数字 X 位于 A 和 B 之间 并且您希望 Y 位于 C 和
  • 使用pivot_longer将R中的多列变成一列[重复]

    这个问题在这里已经有答案了 我有一个dfpopulation看起来像这样 未列出所有列和行 Region X1975 X1976 X1977 X2008 National Total 942420 93717 94974 132802 Be
  • R:如何根据规范更改数据框中的列名称

    我有一个数据框 它的开头如下 SM H1455 SM V1456 SM K1457 SM X1461 SM K1462 ENSG00000000419 8 290 270 314 364 240 ENSG00000000457 8 252
  • 建模前减少因子水平数量

    我有一个 2600 个级别的因子 我想在建模之前将其减少到 10 我想我可以通过这样的操作来做到这一点 如果一个因素列出的次数少于 x 次 则应将其放入名为 其他 的存储桶中 这是一些示例数据 df lt data frame colour
  • 栅格堆叠后如何写入?

    我想操作几个光栅文件 然后再次写入它们 rasterfiles lt list files C data envi full names TRUE d1 lt overlay stack rasterfiles fun function x
  • 对于多项式,获取其所有极值并通过突出显示所有单调部分来绘制它

    有人问我这个有趣的问题 我认为值得将其发布在这里 因为 Stack Overflow 上还没有任何相关线程 假设我有长度为的多项式系数n vector pc 其中次数多项式n 1对于变量x可以以其原始形式表示 pc 1 pc 2 x pc
  • 编写健壮的 R 代码:命名空间、屏蔽和使用 `::` 运算符

    简洁版本 对于那些不想阅读我的 案例 的人来说 这就是本质 最小化新包破坏现有代码 即编写您编写的代码 的机会的推荐方法是什么尽可能坚固 充分利用该功能的推荐方法是什么 命名空间机制 when a just using贡献的软件包 比如在一
  • 如何从 PHP 中的字符串创建可能的字符串组合?

    如何从 PHP 中的字符串创建可能的字符串组合 Exp input abc output array 0 gt a 1 gt ab 2 gt abc 3 gt ac 4 gt acb 5 gt b 6 gt ba 7 gt bac 8 gt

随机推荐

  • Spring Data Elasticsearch (4.x) - 使用 @Id 强制 _source 中的 id 字段

    Summary 最近我们升级到 Spring Data Elasticsearch 4 x 这个主要版本的一部分意味着 Jackson 不再用于将我们的域对象转换为 json 使用MappingElasticsearchConverter相
  • 静态库中的 Objective-C 类别

    你能指导我如何正确地将静态库链接到 iPhone 项目吗 我使用添加到应用程序项目中的静态库项目作为直接依赖项 目标 gt 常规 gt 直接依赖项 并且所有工作正常 但类别 静态库中定义的类别在应用程序中不起作用 所以我的问题是如何将某些类
  • 在 django 中使用 pika 的 Rabbitmq 监听器

    我有一个 django 应用程序 我想使用来自rabbit mq 的消息 我希望监听器在启动 django 服务器时开始使用 我正在使用 pika 库连接到rabbitmq 提供一些代码示例确实会有帮助 首先 您需要在 django 项目开
  • Chrome 扩展程序:无法加载 JavaScript 文件

    我发布了有关我的 Chrome 扩展程序的另一个问题here https stackoverflow com questions 28303597 tumblr dashboard modifications per chrome exte
  • 使用 apply 函数填充 NA 矩阵

    我想使用 apply 函数填充一个空矩阵 例如我的目的是简化下面的代码 tmp lt matrix NA 10 10 tmp 1 lt sample 1 500 10 tmp 2 lt sample 1 500 10 tmp 10 lt s
  • 在 PHP 中获取 SCOPE_IDENTITY()

    一直在尝试获取 SCOPE IDENTITY 插入数据库的最后一个 ID 并将其作为变量存储在我的 PHP 函数中 看了我在 stackoverflow 上可能找到的所有答案 但我仍然没有找到答案 这就是我目前所拥有的 Confirm bo
  • 创建现有 SOAP Web 服务的 REST 包装器

    我有一个 NET Web 服务 它是一个 SOAP 服务 我想将其转换为 REST 服务 我必须使用哪些选项来创建该中间件才能 接受请求并致电肥皂服务 翻译 SOAP 服务返回的结果 将响应返回给请求者 你有两个选择 1 只需创建一个具有两
  • 仅协议方案支持跨源请求,我该怎么办?

    我无法向 php 发送信息 它被阻止了 仅协议方案支持跨源请求 http data chrome chrome extension https 我使用了不同的 只有三分之一的电脑可以使代码工作 document on ready funct
  • Azure 服务总线主题分区

    我正在尝试向使用两者创建的主题发送消息启用重复检测 and 启用分区选项已选中 我不设置SessionId and PartitionKey我的属性BrokeredMessage实例 根据this https learn microsoft
  • 在 Android 中使用 AES/CBC/PKCS5Padding 解密不正确

    我在 Android v2 2 API 8 中编写了以下代码 其中输入纯文本 代码使用用户密码和随机盐对其进行加密 然后解密 运行代码后 我只得到部分正确的纯文本 例如用户输入 Msg 1 5 to encrypt 解密结果为 Msg15t
  • 将字节数组解码为Java中已压缩的位图

    我按以下方式压缩位图 Bitmap bmpSig getMyBitMap int size bmpSig getWidth bmpSig getHeight ByteArrayOutputStream out new ByteArrayOu
  • 如何在 dart 中创建安全的 http 服务器?

    我正在尝试将 dart http 服务器设置为仅使用 https 运行 所以我认为我需要使用HttpServer bindSecure https api dartlang org apidocs channels stable dartd
  • 在 shell 中导出函数

    请告诉我如何在父 shell bash sh 或 ksh 中导出函数 以便该函数可供从父进程启动的所有子进程使用 The export fBash 特有的功能 parent bin bash plus1 echo 1 1 echo plus
  • 无法在 Windows 计算机上安装 sasl-0.1.3 python 包

    我正在尝试在 Windows 7 64 位机器 上安装 sasl 0 1 3 python 包 它出现 C1083 致命错误 看起来 saslwrapper cpp 无法在 c 模块中包含 sasl sasl h 库 请帮助我解决问题 如果
  • boost::32 和 64 位进程之间的进程间共享内存

    我试图让 boost interprocess 在 32 位和 64 位进程之间共享内存 此错误跟踪器条目 https svn boost org trac boost ticket 5230表明这在我使用的 Boost 1 49 中可能是
  • 在模板中表达左移或右移的优雅方式

    我目前有一个模板函数 根据其模板参数 A 和 B 可以向左或向右移动值 template
  • 以编程方式设置 MailItem 的后续标志来完成?

    我试图找出如何在 Outlook 2007 中通过 VBA 将 MailItem 的后续标志设置为完成 谷歌搜索返回了大量在 Outlook 2003 及之前版本中有效的方法 例如 更改 MailItem 的 FlagStatus 属性的值
  • 如何处理静态存储持续时间警告?

    我是一个试图从书本上学习 C 的新手 下面的代码可以正常工作并产生预期的输出 但是定义的两行有警告engine and randomInt 使用静态存储持续时间初始化 引擎 可能会引发无法捕获的异常 如果我将第 7 行和第 8 行放在mai
  • .NET 错误关闭串口 BaseStream 错误仅在端口打开时出现

    我正在使用 NET System IO Ports SerialPort 并按照本文中的建议使用 BaseStreamIf you must使用 NET System IO Ports SerialPort http www sparxen
  • 对角块矩阵行之间的组合列表

    我有以下 R 矩阵 它是 2x3 和 3x3 子矩阵的组合 它可以是 2 个以上具有不同维度的子矩阵 例如 m1xp 和 m2xp 和 m3xp 其中 m1 m2 m3 A2 lt list rbind c 1 1 1 c 1 1 1 rb