从 2 个矩阵 R 中寻找每一行的最小值

阿马尔帕尔

我需要 2 个矩阵中每一行的最小值。行名称在两个矩阵中都是通用的,但列名称会发生​​变化。

例如:

matrix 1:
X <- matrix(runif(20), nrow=4)
rownames(X) <- paste0("Inst", seq(nrow(X)))
colnames(X) <- paste0("Ref", seq(ncol(X)))

matrix 2:
Y <- matrix(runif(20), nrow=4)
rownames(Y) <- paste0("Inst", seq(nrow(X)))
colnames(Y) <- paste0("Alt", seq(ncol(X)))

预期结果:

             Minimum    Id
    Inst1   0.1275317  Ref15
    Inst2   0.0006247  Alt4
    Inst3   0.04583117 Ref13
    Inst4   0.1111354  Alt5

我试过了

t(apply(Y, 1, sort)[ 1, ]) 
t(apply(X, 1, sort)[ 1, ])

但不知道如何从矩阵中找到最小值并分别制表作为预期的输出文件。我也有重复的行名和列名。

莫里茨·埃弗斯

这是一种tidyverse可能性。请注意,我使用了固定种子set.seed(2017)来生成样本数据。

library(tidyverse)
cbind.data.frame(X, Y) %>%
    rownames_to_column("row") %>%
    gather(Id, Minimum, -row) %>%
    group_by(row) %>%
    filter(Minimum == min(Minimum)) %>%
    arrange(row)
## A tibble: 4 x 3
## Groups:   row [4]
#  row   Id    Minimum
#  <chr> <chr>   <dbl>
#1 Inst1 Ref4  0.0251
#2 Inst2 Alt5  0.110
#3 Inst3 Ref2  0.0393
#4 Inst4 Ref3  0.00202

样本数据

set.seed(2017)
X <- matrix(runif(20), nrow=4)
rownames(X) <- paste0("Inst", seq(nrow(X)))
colnames(X) <- paste0("Ref", seq(ncol(X)))

Y <- matrix(runif(20), nrow=4)
rownames(Y) <- paste0("Inst", seq(nrow(Y)))
colnames(Y) <- paste0("Alt", seq(ncol(Y)))

更新

为了回应您的评论,保留您可以使用的前 3 个最低条目top_n(如@Moody_Mudskipper 所建议)

cbind.data.frame(X, Y) %>%
    rownames_to_column("row") %>%
    gather(Id, Minimum, -row) %>%
    group_by(row) %>%
    top_n(-3, Minimum) %>%
    arrange(row, Minimum)
## A tibble: 12 x 3
## Groups:   row [4]
#   row   Id    Minimum
#   <chr> <chr>   <dbl>
# 1 Inst1 Ref4  0.0251
# 2 Inst1 Alt3  0.0763
# 3 Inst1 Alt5  0.129
# 4 Inst2 Alt5  0.110
# 5 Inst2 Alt4  0.212
# 6 Inst2 Alt3  0.261
# 7 Inst3 Ref2  0.0393
# 8 Inst3 Alt5  0.177
# 9 Inst3 Ref1  0.469
#10 Inst4 Ref3  0.00202
#11 Inst4 Alt3  0.0175
#12 Inst4 Ref1  0.289

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R获得矩阵中每一行的最小值,并返回行名和列名

来自分类Dev

使用R中的apply()函数查找2个矩阵的每一行的加权特征

来自分类Dev

R中具有数据帧的每一行的最小值

来自分类Dev

R:在一幅图中绘制2个矩阵

来自分类Dev

R中2个矩阵之间的MIC相关

来自分类Dev

R:在删除最小值和最大值之后,计算选定列中每一行的SD

来自分类Dev

从另外 2 个矩阵导出矩阵值

来自分类Dev

如何在R中将一个矩阵的每一行与另一个矩阵相乘?

来自分类Dev

在三个2d子矩阵中逐元素查找最小值

来自分类Dev

R中是否有一种有效的方法可以将矩阵M2的每一行“粘贴”到矩阵M1的每一行以获得所有可能的组合?

来自分类Dev

python map:具有2个lambda函数的每一行均获得transposed_row_num,矩阵中的值对

来自分类Dev

考虑矩阵只有一行的R中两个矩阵的除法

来自分类Dev

在R(dplyr)中的行之间寻找最小值

来自分类Dev

如何在R中获得一个大的稀疏矩阵?(> 2 ^ 31-1)

来自分类Dev

电信矩阵中的R个求和行

来自分类Dev

R write.table不在同一文件上写入2个矩阵

来自分类Dev

将R中矩阵的每一列的最后n个非NA值求和

来自分类Dev

r-为数据帧中类别(由2个以上字段定义)中的每一行创建一个序列号

来自分类Dev

减去r中的两个矩阵

来自分类Dev

R-将3个参数函数应用于3列矩阵的每一行,并使用3列的每个值作为参数

来自分类Dev

结合2个矩阵的信息以找到值

来自分类Dev

查找 2 个矩阵之间的对应值

来自分类Dev

替换超出范围的值引用r中每一行的另一个数据框

来自分类Dev

如何在R中移动矩阵的每一行

来自分类Dev

匹配2个矩阵的行,以使行差异的总和最小

来自分类Dev

如何绘制,其中矩阵中的每一行都是R中的线积分图

来自分类Dev

如何绘制,其中矩阵中的每一行都是R中的线积分图

来自分类Dev

从r中矩阵的每一行中减去常数向量

来自分类Dev

对每一列进行排序,并在第一行中获取底部2个值的相应键ID

Related 相关文章

  1. 1

    R获得矩阵中每一行的最小值,并返回行名和列名

  2. 2

    使用R中的apply()函数查找2个矩阵的每一行的加权特征

  3. 3

    R中具有数据帧的每一行的最小值

  4. 4

    R:在一幅图中绘制2个矩阵

  5. 5

    R中2个矩阵之间的MIC相关

  6. 6

    R:在删除最小值和最大值之后,计算选定列中每一行的SD

  7. 7

    从另外 2 个矩阵导出矩阵值

  8. 8

    如何在R中将一个矩阵的每一行与另一个矩阵相乘?

  9. 9

    在三个2d子矩阵中逐元素查找最小值

  10. 10

    R中是否有一种有效的方法可以将矩阵M2的每一行“粘贴”到矩阵M1的每一行以获得所有可能的组合?

  11. 11

    python map:具有2个lambda函数的每一行均获得transposed_row_num,矩阵中的值对

  12. 12

    考虑矩阵只有一行的R中两个矩阵的除法

  13. 13

    在R(dplyr)中的行之间寻找最小值

  14. 14

    如何在R中获得一个大的稀疏矩阵?(> 2 ^ 31-1)

  15. 15

    电信矩阵中的R个求和行

  16. 16

    R write.table不在同一文件上写入2个矩阵

  17. 17

    将R中矩阵的每一列的最后n个非NA值求和

  18. 18

    r-为数据帧中类别(由2个以上字段定义)中的每一行创建一个序列号

  19. 19

    减去r中的两个矩阵

  20. 20

    R-将3个参数函数应用于3列矩阵的每一行,并使用3列的每个值作为参数

  21. 21

    结合2个矩阵的信息以找到值

  22. 22

    查找 2 个矩阵之间的对应值

  23. 23

    替换超出范围的值引用r中每一行的另一个数据框

  24. 24

    如何在R中移动矩阵的每一行

  25. 25

    匹配2个矩阵的行,以使行差异的总和最小

  26. 26

    如何绘制,其中矩阵中的每一行都是R中的线积分图

  27. 27

    如何绘制,其中矩阵中的每一行都是R中的线积分图

  28. 28

    从r中矩阵的每一行中减去常数向量

  29. 29

    对每一列进行排序,并在第一行中获取底部2个值的相应键ID

热门标签

归档