通过rownames将矩阵拆分为子矩阵

时间:2016-02-15 18:58:28

标签: r matrix split

基本上我想知道在用于矩阵时是否有任何方法可以使split函数返回具有相同dimnames的矩阵。这是一个MWE:

m <- matrix(1:9, 3, 3, dimnames = list(c('a', 'a', 'b'), LETTERS[1:3]))
ms <- split(a, f = rownames(a))
ms$a
[1] 1 2 4 5 7 8

虽然我希望ms$a成为像:

这样的矩阵
matrix(ms$a, ncol = 3, dimnames = list(c('a'), LETTERS[1:3]))
  A B C
a 1 4 7
a 2 5 8

1 个答案:

答案 0 :(得分:3)

我们可以按行名称拆分行序列,然后使用索引对矩阵的行进行子集化。

lapply(split(1:nrow(m), rownames(m)), function(i) m[i,])