如何检查矩阵中的每个值是否在R中其他两个矩阵中的对应值之间?

2023-12-22

我有一个矩阵,我想将其与其他两个矩阵进行比较,以查看矩阵中的每个条目是否包含在其他两个矩阵的值内或值之外。例如,如果我的矩阵是:

> M
           [,1]       [,2]       [,3]
[1,] -0.1278982  0.4600544  1.3271033
[2,] -0.1079272  1.2196851 -0.5240536 
[3,]  0.9548449 -0.9979668 -0.6636296 

我的另外两个矩阵是 L 和 U:

> L 
            [,1]      [,2]       [,3]
[1,] -0.49416022 1.0992247 -1.2834469
[2,]  0.35491793 0.2460946  1.1411529
[3,]  0.01755317 0.2469062  0.2843848

and

> U
            [,1]       [,2]        [,3]
[1,] -0.84996737  1.0036554 -0.04747612
[2,]  0.35396050 -0.4612527 -1.47341334
[3,] -0.07716839 -1.5921625  1.62187501

我想将M的每个条目进行比较,看看它是否包含在L和U的相应条目所规定的范围内。

例如,对于 M[1,1],它超出了 -0.49416022 和 -0.84996737 的范围,因此我将为该比较分配值 0。另一方面,对于 M[2,3],该值是 -0.5240536,因此在 1.1411529 和 -1.47341334 之间,因此该比较的值为 0。

最终,我想获得一个全0和1的矩阵,指示M中的条目是否包含在L和U中的相应值内。例如,如果我们将此矩阵称为M_comparisons,则:

> M_comparisons
            [,1]      [,2]       [,3]
[1,]           0         0          0
[2,]           0         0          1
[3,]           0         1          0

有谁知道如何在非常快的计算时间内对大型矩阵执行此操作?谢谢!


很简单:

(M > U & M < L)*1

#     [,1] [,2] [,3]
#[1,]    0    0    0
#[2,]    0    0    1
#[3,]    0    1    0

或者,按照 Rui Barradas 的建议(稍快一些):

as.integer(M > U & M < L)

基准

library(microbenchmark)

microbenchmark(
  (M > U & M < L)*1,
  as.integer(M > U & M < L)
)

#Unit: microseconds
#                      expr   min    lq    mean median     uq    max neval
#       (M > U & M < L) * 1 1.278 1.469 2.15965  1.640 1.8000 38.981   100
# as.integer(M > U & M < L) 1.042 1.212 1.59757  1.384 1.5375 12.008   100

样本数据

M <- t(matrix(c(-0.1278982, 0.4600544, 1.3271033, 
                -0.1079272, 1.2196851, -0.5240536,
                 0.9548449, -0.9979668, -0.6636296), nrow = 3))
L <- t(matrix(c(-0.49416022, 1.0992247, -1.2834469, 
                 0.35491793, 0.2460946,  1.1411529, 
                 0.01755317, 0.2469062,  0.284384), nrow = 3))
U <- t(matrix(c(-0.84996737, 1.0036554, -0.04747612, 
                 0.35396050, -0.4612527, -1.47341334, 
                -0.07716839, -1.5921625, 1.6218750), nrow = 3))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查矩阵中的每个值是否在R中其他两个矩阵中的对应值之间? 的相关文章

  • 如何提取与 R 中主题 ID 列表匹配的行?

    我有一个包含许多主题 ID 的数据框 每个主题都有重复观察 我还有一个单独的数据框 其中只有一个主题 ID 列表 我想从更大的数据框中匹配和提取 如何以允许我引用不同数据帧中的SubjectID列表的方式编写代码 不确定我是否完全理解这个问
  • 基于另一个数据集获取数据集的子集

    假设我有一个数据集 即 dat1 ID block plot SPID TotHeight 1 1 1 4 44 5 2 1 1 4 51 3 1 1 4 28 7 4 1 1 4 24 5 5 1 1 4 27 3 6 1 1 4 20
  • (C) 获取矩阵中一行的 3 个最小元素,并随机选择一个

    我有一个 8x8 矩阵 在选择我想要的行后 我想获得它的三个最小元素 并随机选择这三个元素之一 问题是我不知道如何处理这三个要素 我只知道如何获取最小元素 即下面的代码 int piezas 8 8 0 2 2 5 3 2 1 1 0 4
  • 计算例如具有多列 data.frames 的列表中的平均值

    我有几个 data frames 的列表 每个 data frame 有几列 通过使用mean mylist first dataframe a我可以得到这个 data frame 中 a 的平均值 但是我不知道如何计算列表中存储的所有 d
  • kableExtra 中的 row_spec() 函数不会在 html 输出中创建水平线

    我想在 kableextra 表中的某一行下方添加一条水平线 row spec 函数的参数 hline after 应该在行下方添加水平线 row spec 文档 https www rdocumentation org packages
  • 使用 broom 和 tidyverse 总结 r 平方游戏

    我发布了一个问题here https stackoverflow com questions 48627287 getting adjusted r squared value for each line in a geom smooth
  • 如何使用 MPI_Scatterv 将矩阵的行发送到所有进程?

    我正在使用 MPI 接口 我想分割一个矩阵 按行 并将各个部分分配给每个进程 例如 我有这个7x7的方阵M M 0 00 1 00 2 00 3 00 4 00 5 00 6 00 7 00 8 00 9 00 10 00 11 00 12
  • 计算每个唯一值出现的次数

    假设我有 v rep c 1 2 2 2 25 现在 我想计算每个唯一值出现的次数 unique v 返回唯一值是什么 但不返回它们的数量 gt unique v 1 1 2 我想要一些能给我的东西 length v v 1 1 25 le
  • 正则表达式字符串中第一个和最后一个非点的位置

    我希望找到字符串的第一个和最后一个非点元素的位置 理想情况下我想这样做regex在基地R 我已经写过R解决问题的代码 不过 我对一个感兴趣regex解决方案 感谢您的任何建议 这是一个示例数据集和R代码以获得所需的结果 此代码拆分字符串并使
  • 多功能测试仪替代 system.time

    我已经看到 我认为是这样 使用了类似于 system time 的函数 它可以同时评估多个函数的时间并输出一个输出 我不记得它是什么 并且用我正在使用的术语进行互联网搜索并没有得到我想要的响应 有人知道我正在谈论的功能的名称 位置吗 你想要
  • 选择 R 中的数据表中隐藏时(在绿色加号下方)列的显示顺序

    Context 使用 DataTables 库制作交互式表格时 当屏幕宽度对于列的数量和宽度来说太窄时 列将隐藏在绿色 号下 我有一个非常宽的表格 有 20 多列 其中一些内容非常冗长 因此某些列在所有屏幕宽度下总是隐藏的 每次隐藏新列时
  • 时间戳半小时窗口内字段的平均值

    我的数据框有列名Timestamp es看起来像 Timestamp es 2015 04 01 09 07 42 31 2015 04 01 09 08 01 29 5 2015 04 01 09 15 03 18 5 2015 04 0
  • 如何使用 usmap 标记数字而不是名称?

    我知道 usmap 有一个选项label in plot usmap 我想标记一些数字 而不是状态名称 我想 usmap 中应该有与州质心坐标相关的数据 但我不知道如何找到它 如果我能得到 坐标然后我可以用它来标记数字geom text 这
  • 将绘图调用拆分为多个块

    我正在编写一个图的解释 其中我基本上将在第一个块中创建图 然后描述该输出 并在第二个块中添加一个轴 然而 似乎每个块都会强制一个新的绘图环境 因此当我们尝试使用以下命令运行块时会出现错误axis独自的 观察 output html docu
  • Dendextend:关于如何根据定义的组为树状图的标签着色

    我正在尝试使用一个名为 dendextend 的很棒的 R 包来绘制树状图并根据一组先前定义的组为其分支和标签着色 我已阅读您在 Stack Overflow 中的答案以及 dendextend vignette 的常见问题解答 但我仍然不
  • 从命令行运行 R 代码 (Windows)

    我在名为 analysis r 的文件中有一些 R 代码 我希望能够从命令行 CMD 运行该文件中的代码 而无需通过 R 终端 并且我还希望能够传递参数并在我的代码中使用这些参数 例如就像下面的伪代码 C gt execute r scri
  • 在 R 格子包中微调点图

    我正在尝试为不同的数据集和不同的算法绘制一堆 ROC 区域 我有三个变量 方案 指定所使用的算法 数据集 是正在测试算法的数据集 以及 Area under ROC 我正在 R 中使用lattice库 命令如下 点图 方案 Area und
  • 以引用透明的方式从函数的省略号参数中提取符号

    事情又发生了 我正要按下发布答案按钮的问题被删除了 我正在寻找一种方法来从函数的省略号参数中提取绑定到符号的对象的值以及符号 也就是说 我试图以引用透明的方式从省略号中提取符号 我尝试过使用替代品和lazy dots 但没有成功 funct
  • ggplot2 geom_密度和geom_histogram在一个图中

    如何制作一个所有条形加起来为 1 的直方图 并在适合的上方添加一个密度层 set seed 1234 df lt data frame sex factor rep c F M each 200 weight round c rnorm 2
  • 文本挖掘 pdf 文件/词频问题

    我正在尝试挖掘一篇具有丰富 pdf 编码和图表的文章的 pdf 我注意到 当我挖掘一些 pdf 文档时 我得到的高频词是 phi taeoe toe sigma gamma 等 它与某些 pdf 文档配合良好 但与其他文档配合使用时却得到这

随机推荐