【发布时间】:2019-08-15 21:28:12
【问题描述】:
我有一个由rowSums() 订购的矩阵。我现在想通过传递行名的 char 向量来选择其中的几行,然后轻松地将它们移回矩阵的顶部 ,同时保持移动的行与它们的顺序相同在选择向量中。
我尝试使用subset() 的各种组合或直接选择索引来做到这一点,但我永远无法按照我想要的顺序得到结果矩阵,如果它完全有效的话。我觉得必须有一种更直接的方法来做到这一点。
假设我有一个矩阵mat 由rowSums() 排序:
sam1 sam2 sam3 sam4 sam5
sig1 1 2 3 4 5
sig2 6 7 8 9 10
sig3 11 12 13 14 15
sig4a 16 17 18 19 20
sig4b 21 22 23 24 25
sig4c 26 27 28 29 30
sig5 31 32 33 34 35
sig6 36 37 38 39 40
sig7a 41 42 43 44 45
aig7b 46 47 48 49 50
我想选择我感兴趣的行数:
select = c('sig6','sig4a','sig2')
并将它们移回矩阵的顶部,同时保持它们在select向量中的顺序,同时将剩余未选中的行留在它们下方以获得新矩阵:
sam1 sam2 sam3 sam4 sam5
sig6 36 37 38 39 40 *
sig4a 16 17 18 19 20 *
sig2 6 7 8 9 10 *
sig1 1 2 3 4 5
sig3 11 12 13 14 15
sig4b 21 22 23 24 25
sig4c 26 27 28 29 30
sig5 31 32 33 34 35
sig7a 41 42 43 44 45
aig7b 46 47 48 49 50
有没有一种不涉及制作中间矩阵或复杂解决方法的简单方法?似乎应该有,但我一直无法找到解决方案。也许我忽略了一些东西。
【问题讨论】: