基本上我想知道在用于矩阵时是否有任何方法可以使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
答案 0 :(得分:3)
我们可以按行名称拆分行序列,然后使用索引对矩阵的行进行子集化。
lapply(split(1:nrow(m), rownames(m)), function(i) m[i,])