子集矩阵由一个以上的东西快速

时间:2016-04-16 09:18:51

标签: r matrix

我有一个矩阵我想快速使用两个标准进行分组。 1)colnames匹配rownames和2)一个矩阵中的值为FALSE

m
  [,1]
A    1
B    2
C    3
D    4
E    5

tf
        E     B     A
[1,] FALSE FALSE TRUE

输出应为

m2
  [,1]
E    5
B    2

1 个答案:

答案 0 :(得分:2)

由于'tf'只有一行,当我们通过否定对逻辑矩阵进行子集时,会导致命名为vector的子集([)默认为{{1} }。从drop=TRUE中提取names并将其用作行索引以对“m”进行子集化。在这里,我们可以使用vector,因为'm'中只有一列。

drop=FALSE

数据

m[names(tf[,!tf]), , drop=FALSE]
#   [,1]
#E    5
#B    2